diff --git a/import-layers/meta-virtualization/.gitignore b/import-layers/meta-virtualization/.gitignore
deleted file mode 100644
index 65feb82..0000000
--- a/import-layers/meta-virtualization/.gitignore
+++ /dev/null
@@ -1,6 +0,0 @@
-build*/
-pyshtables.py
-*.swp
-*.orig
-*.rej
-*~
diff --git a/import-layers/meta-virtualization/COPYING.MIT b/import-layers/meta-virtualization/COPYING.MIT
deleted file mode 100644
index fb950dc..0000000
--- a/import-layers/meta-virtualization/COPYING.MIT
+++ /dev/null
@@ -1,17 +0,0 @@
-Permission is hereby granted, free of charge, to any person obtaining a copy 
-of this software and associated documentation files (the "Software"), to deal 
-in the Software without restriction, including without limitation the rights 
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 
-copies of the Software, and to permit persons to whom the Software is 
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in 
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 
-THE SOFTWARE.
diff --git a/import-layers/meta-virtualization/README b/import-layers/meta-virtualization/README
deleted file mode 100644
index f13de08..0000000
--- a/import-layers/meta-virtualization/README
+++ /dev/null
@@ -1,79 +0,0 @@
-meta-virtualization
-===================
-
-This layer provides support for building Xen, KVM, Libvirt, and associated
-packages necessary for constructing OE-based virtualized solutions.
-
-The bbappend files for some recipes (e.g. linux-yocto) in this layer need to
-have 'virtualization' in DISTRO_FEATURES to have effect. To enable them, add
-in configuration file the following line.
-
-  DISTRO_FEATURES_append = " virtualization"
-
-If meta-virtualization is included, but virtualization is not enabled as a
-distro feature a warning is printed at parse time:
-
-    You have included the meta-virtualization layer, but
-    'virtualization' has not been enabled in your DISTRO_FEATURES. Some bbappend files
-    may not take effect. See the meta-virtualization README for details on enabling
-    virtualization support.
-
-If you know what you are doing, this warning can be disabled by setting the following
-variable in your configuration:
-
-  SKIP_META_VIRT_SANITY_CHECK = 1
-
-Depending on your use case, there are other distro features in meta-virtualization
-that may also be enabled:
-
- - xen: enables xen functionality in various packages (kernel, libvirt, etc)
- - kvm: enables KVM configurations in the kernel and autoloads modules
- - aufs: enables aufs support in docker and linux-yocto
- - x11: enable xen and libvirt functionality related to x11
- - selinux: enables functionality in libvirt and lxc
- - systemd: enable systemd services and unit files (for recipes for support)
- - sysvinit: enable sysvinit scripts (for recipes with support)
-
-Dependencies
-------------
-This layer depends on:
-
-URI: git://github.com/openembedded/openembedded-core.git
-branch: master
-revision: HEAD
-prio: default
-
-URI: git://github.com/openembedded/meta-openembedded.git
-branch: master
-revision: HEAD
-layers: meta-oe
-        meta-networking
-        meta-filesystems
-        meta-python
-
-BBFILE_PRIORITY_openembedded-layer = "4"
-
-Required for Xen XSM policy:
-URI: git://git.yoctoproject.org/meta-selinux
-branch: master
-revision: HEAD
-prio: default
-
-Maintenance
------------
-
-Send pull requests, patches, comments or questions to meta-virtualization@yoctoproject.org
-
-Maintainers: Raymond Danks <ray.danks@se-eng.com>
-             Bruce Ashfield <bruce.ashfield@gmail.com>
-
-When sending single patches, please using something like:
-$ git send-email -1 -M --to meta-virtualization@yoctoproject.org --subject-prefix='meta-virtualization][PATCH'
-
-License
--------
-
-All metadata is MIT licensed unless otherwise stated. Source code included
-in tree for individual recipes is under the LICENSE stated in each recipe
-(.bb file) unless otherwise stated.
-
diff --git a/import-layers/meta-virtualization/classes/sanity-meta-virt.bbclass b/import-layers/meta-virtualization/classes/sanity-meta-virt.bbclass
deleted file mode 100644
index b4ed082..0000000
--- a/import-layers/meta-virtualization/classes/sanity-meta-virt.bbclass
+++ /dev/null
@@ -1,10 +0,0 @@
-addhandler virt_bbappend_distrocheck
-virt_bbappend_distrocheck[eventmask] = "bb.event.SanityCheck"
-python virt_bbappend_distrocheck() {
-    skip_check = e.data.getVar('SKIP_META_VIRT_SANITY_CHECK') == "1"
-    if 'virtualization' not in e.data.getVar('DISTRO_FEATURES').split() and not skip_check:
-        bb.warn("You have included the meta-virtualization layer, but \
-'virtualization' has not been enabled in your DISTRO_FEATURES. Some bbappend files \
-may not take effect. See the meta-virtualization README for details on enabling \
-virtualization support.")
-}
diff --git a/import-layers/meta-virtualization/conf/distro/include/meta-virt-default-versions.inc b/import-layers/meta-virtualization/conf/distro/include/meta-virt-default-versions.inc
deleted file mode 100644
index 27e7b90..0000000
--- a/import-layers/meta-virtualization/conf/distro/include/meta-virt-default-versions.inc
+++ /dev/null
@@ -1,9 +0,0 @@
-# Meta-virtuailization PREFERED_VERSION
-
-PREFERRED_VERSION_python-blinker = "1.3"
-PREFERRED_VERSION_python-gevent = "1.0.1"
-PREFERRED_VERSION_python-m2crypto = "0.22.3"
-PREFERRED_VERSION_python-pyyaml = "3.11"
-PREFERRED_VERSION_python-redis = "2.10.3"
-PREFERRED_VERSION_python-sqlalchemy = "1.1.5"
-PREFERRED_VERSION_python-werkzeug = "0.10.4"
diff --git a/import-layers/meta-virtualization/conf/distro/include/virt_security_flags.inc b/import-layers/meta-virtualization/conf/distro/include/virt_security_flags.inc
deleted file mode 100644
index f4c288b..0000000
--- a/import-layers/meta-virtualization/conf/distro/include/virt_security_flags.inc
+++ /dev/null
@@ -1,5 +0,0 @@
-# Build errors with the pie options enabled
-SECURITY_CFLAGS_pn-libvirt = "${SECURITY_NO_PIE_CFLAGS}"
-
-# This has text relco errors with the pie options enabled
-SECURITY_CFLAGS_pn-lxc = "${SECURITY_NO_PIE_CFLAGS}"
diff --git a/import-layers/meta-virtualization/conf/layer.conf b/import-layers/meta-virtualization/conf/layer.conf
deleted file mode 100644
index fa2e015..0000000
--- a/import-layers/meta-virtualization/conf/layer.conf
+++ /dev/null
@@ -1,30 +0,0 @@
-# We have a conf and classes directory, append to BBPATH
-BBPATH .= ":${LAYERDIR}"
-
-# We have a recipes directory, add to BBFILES
-BBFILES += "${LAYERDIR}/recipes*/*/*.bb ${LAYERDIR}/recipes*/*/*.bbappend"
-
-BBFILE_COLLECTIONS += "virtualization-layer"
-BBFILE_PATTERN_virtualization-layer := "^${LAYERDIR}/"
-BBFILE_PRIORITY_virtualization-layer = "8"
-
-# Custom licenses used by some packages in this layer
-LICENSE_PATH += "${LAYERDIR}/files/custom-licenses"
-
-# This should only be incremented on significant changes that will
-# cause compatibility issues with other layers
-LAYERVERSION_virtualization-layer = "1"
-LAYERSERIES_COMPAT_virtualization-layer = "sumo"
-LAYERDEPENDS_virtualization-layer = "core networking-layer"
-
-# Override security flags
-require conf/distro/include/virt_security_flags.inc
-
-PREFERRED_PROVIDER_virtual/runc ?= "runc-docker"
-PREFERRED_PROVIDER_virtual/containerd ?= "containerd-opencontainers"
-
-# Sanity check for meta-virtualization layer.
-# Setting SKIP_META_VIRT_SANITY_CHECK to "1" would skip the bbappend files check.
-INHERIT += "sanity-meta-virt"
-
-require ${@bb.utils.contains('DISTRO_FEATURES', 'virtualization', 'meta-virt-default-versions.inc', '', d)}
diff --git a/import-layers/meta-virtualization/docs/00-INDEX b/import-layers/meta-virtualization/docs/00-INDEX
deleted file mode 100644
index a2ffd99..0000000
--- a/import-layers/meta-virtualization/docs/00-INDEX
+++ /dev/null
@@ -1,12 +0,0 @@
-This is a brief list of all the files in meta-virtualization/docs and what
-they contain. If you add a documentation file, please list it here in
-alphabetical order as well.
-
-00-INDEX
-        - this file.
-
-00-README
-        - info on the goals of meta-virtualization and this docs subdir
-
-openvswitch.txt
-	- example on how to setup openvswitch with qemu/kvm.
diff --git a/import-layers/meta-virtualization/docs/00-README b/import-layers/meta-virtualization/docs/00-README
deleted file mode 100644
index 6fea112..0000000
--- a/import-layers/meta-virtualization/docs/00-README
+++ /dev/null
@@ -1,6 +0,0 @@
-meta-virtualization: docs
-=========================
-
-The docs subdirectory is a holding tank for meta-virtualization related
-READMEs, documentation, testing information, configuration and other 
-notes that help the users of meta-virt.
diff --git a/import-layers/meta-virtualization/docs/openvswitch.txt b/import-layers/meta-virtualization/docs/openvswitch.txt
deleted file mode 100644
index 4410d27..0000000
--- a/import-layers/meta-virtualization/docs/openvswitch.txt
+++ /dev/null
@@ -1,96 +0,0 @@
-Simple setup for connecting openvswitch to qemu/kvm
-===================================================
-This example brings up openvswitch using a private network.
-
-Preliminary notes
-=================
-1. Make sure to build kernel support for openvswitch as a module.  The
-openvswitch init scripts expect to load a module and upon success
-continue to setup the switch.  If openvswitch is compiled
-statically, the init scripts not load the ovs-vswitchd daemon
-and none of the configured bridges will show up in the interfaces
-table (ifconfig).  You can get around this limiation by running the
-following by hand:
-	# ovs-vswitchd --pidfile --detach
-
-2. Verify that ovs-vswitchd is running before proceeding:
-	# /etc/init.d/openvswitch-switch status
-	ovsdb-server is running with pid 1867
-	ovs-vswitchd is running with pid 1877
-
-3. A kernel and rootfs is required for qemu bring up.
-
-Qemu Setup
-==========
-The host requires a /etc/qemu-ifup script to setup the bridging and tap
-devices.  Qemu will invoke this qemu-ifup script at startup.  Here is
-an example script:
-$ cat /etc/qemu-fup
-	#!/bin/sh
-	# the tap is dynamically assigned and passed into this script
-	# as a parameter
-	TAP=$1
-
-	# Note: if booting over NFS, once the $ETH0 device is added to the bridge,
-	# your host will be unusable.  In that case, setup networking
-	# init scripts appropriately and change the following to work
-	# with it.
-	ETH0="eth1"
-	NETMASK=255.255.255.0
-	IP=192.168.1.1
-	GATEWAY=
-	SWITCH=ovsbr0
-	if [ -n "$TAP" ];then
-		ifconfig $TAP up
-		ifconfig $SWITCH down &>/dev/null
-		ovs-vsctl del-br $SWITCH
-		ovs-vsctl add-br $SWITCH
-		ifconfig $ETH0 0.0.0.0
-		ifconfig $SWITCH $IP up netmask $NETMASK
-		#-- external access not required for this test.
-		#route add default gw $GATEWAY
-		ovs-vsctl add-port $SWITCH $ETH0
-		ovs-vsctl add-port $SWITCH $TAP
-		exit 0
-	else
-		echo "$0: No tap device"
-		exit 1
-	fi
-
-Start Qemu
-==========
-This example will bring up qemu with a tap network interface.
-Note: this command must be run as root due to the networking setup.
-
-	$ qemu-system-x86_64 -nographic -k en-us -m 1024  \
-		-net nic,macaddr=1a:46:0b:ca:bc:7a,model=virtio \
-		-net tap -enable-kvm\
-		-kernel /opt/dpdk-guest-kernel \
-		-append 'root=/dev/vda ro console=ttyS0' \
-		-drive file=/opt/intel-xeon-core-ovp-kvm-preempt-rt-dist.ext3,cache=none,if=virtio
-
-Once the guest OS is up and running, configure the quest network interface:
-	$ ifconfig eth0 192.168.1.10
-
-Ping the bridge:
-	$ ping 192.168.1.1
-
-From the host, view the bridged network:
-$ ovs-vsctl show
-c1212b96-ef49-4a8e-b598-09b05b854dd0
-    Bridge "ovsbr0"
-        Port "tap0"
-            Interface "tap0"
-        Port "eth1"
-            Interface "eth1"
-        Port "ovsbr0"
-            Interface "ovsbr0"
-                type: internal
-
-At this point, openvswitch is up and running.  If you want external
-network access, you need to set a GATEWAY in the qemu-ifup script and
-make sure the external device is part of the bridge.
-
-Note:
-Proper setup will require a /etc/qemu-ifdown script to tear down the
-bridge and interfaces. (not provided here).
diff --git a/import-layers/meta-virtualization/files/custom-licenses/Intel-ACPI b/import-layers/meta-virtualization/files/custom-licenses/Intel-ACPI
deleted file mode 100644
index df0d0bb..0000000
--- a/import-layers/meta-virtualization/files/custom-licenses/Intel-ACPI
+++ /dev/null
@@ -1,104 +0,0 @@
-1. Copyright Notice
-
-Some or all of this work - Copyright (c) 1999 - 2010, Intel Corp.
-All rights reserved.
-
-2. License
-
-2.1. This is your license from Intel Corp. under its intellectual property
-rights.  You may have additional license terms from the party that provided
-you this software, covering your right to use that party's intellectual
-property rights.
-
-2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a
-copy of the source code appearing in this file ("Covered Code") an
-irrevocable, perpetual, worldwide license under Intel's copyrights in the
-base code distributed originally by Intel ("Original Intel Code") to copy,
-make derivatives, distribute, use and display any portion of the Covered
-Code in any form, with the right to sublicense such rights; and
-
-2.3. Intel grants Licensee a non-exclusive and non-transferable patent
-license (with the right to sublicense), under only those claims of Intel
-patents that are infringed by the Original Intel Code, to make, use, sell,
-offer to sell, and import the Covered Code and derivative works thereof
-solely to the minimum extent necessary to exercise the above copyright
-license, and in no event shall the patent license extend to any additions
-to or modifications of the Original Intel Code.  No other license or right
-is granted directly or by implication, estoppel or otherwise;
-
-The above copyright and patent license is granted only if the following
-conditions are met:
-
-3. Conditions
-
-3.1. Redistribution of Source with Rights to Further Distribute Source.
-Redistribution of source code of any substantial portion of the Covered
-Code or modification with rights to further distribute source must include
-the above Copyright Notice, the above License, this list of Conditions,
-and the following Disclaimer and Export Compliance provision.  In addition,
-Licensee must cause all Covered Code to which Licensee contributes to
-contain a file documenting the changes Licensee made to create that Covered
-Code and the date of any change.  Licensee must include in that file the
-documentation of any changes made by any predecessor Licensee.  Licensee
-must include a prominent statement that the modification is derived,
-directly or indirectly, from Original Intel Code.
-
-3.2. Redistribution of Source with no Rights to Further Distribute Source.
-Redistribution of source code of any substantial portion of the Covered
-Code or modification without rights to further distribute source must
-include the following Disclaimer and Export Compliance provision in the
-documentation and/or other materials provided with distribution.  In
-addition, Licensee may not authorize further sublicense of source of any
-portion of the Covered Code, and must include terms to the effect that the
-license from Licensee to its licensee is limited to the intellectual
-property embodied in the software Licensee provides to its licensee, and
-not to intellectual property embodied in modifications its licensee may
-make.
-
-3.3. Redistribution of Executable. Redistribution in executable form of any
-substantial portion of the Covered Code or modification must reproduce the
-above Copyright Notice, and the following Disclaimer and Export Compliance
-provision in the documentation and/or other materials provided with the
-distribution.
-
-3.4. Intel retains all right, title, and interest in and to the Original
-Intel Code.
-
-3.5. Neither the name Intel nor any other trademark owned or controlled by
-Intel shall be used in advertising or otherwise to promote the sale, use or
-other dealings in products derived from or relating to the Covered Code
-without prior written authorization from Intel.
-
-4. Disclaimer and Export Compliance
-
-4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED
-HERE.  ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE
-IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT,  ASSISTANCE,
-INSTALLATION, TRAINING OR OTHER SERVICES.  INTEL WILL NOT PROVIDE ANY
-UPDATES, ENHANCEMENTS OR EXTENSIONS.  INTEL SPECIFICALLY DISCLAIMS ANY
-IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A
-PARTICULAR PURPOSE.
-
-4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES
-OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR
-COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT,
-SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY
-CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL
-HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES.  THESE LIMITATIONS
-SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY
-LIMITED REMEDY.
-
-4.3. Licensee shall not export, either directly or indirectly, any of this
-software or system incorporating such software without first obtaining any
-required license or other approval from the U. S. Department of Commerce or
-any other agency or department of the United States Government.  In the
-event Licensee exports any such software from the United States or
-re-exports any such software from a foreign destination, Licensee shall
-ensure that the distribution and export/re-export of the software is in
-compliance with all laws, regulations, orders, or other restrictions of the
-U.S. Export Administration Regulations. Licensee agrees that neither it nor
-any of its subsidiaries will export/re-export any technical data, process,
-software, or service, directly or indirectly, to any country for which the
-United States government or any agency thereof requires an export license,
-other governmental approval, or letter of assurance, without first obtaining
-such license, approval or letter.
diff --git a/import-layers/meta-virtualization/files/custom-licenses/NewRelic b/import-layers/meta-virtualization/files/custom-licenses/NewRelic
deleted file mode 100644
index 9c2e5e8..0000000
--- a/import-layers/meta-virtualization/files/custom-licenses/NewRelic
+++ /dev/null
@@ -1,33 +0,0 @@
-  Copyright (c) 2010-2014 New Relic, Inc. All rights reserved.
-
-Certain inventions disclosed in this file may be claimed within patents
-owned or patent applications filed by New Relic, Inc. or third parties.
-Subject to the terms of this notice, New Relic grants you a nonexclusive,
-nontransferable license, without the right to sublicense, to (a) install
-and execute one copy of these files on any number of workstations owned or
-controlled by you and (b) distribute verbatim copies of these files to
-third parties. As a condition to the foregoing grant, you must provide this
-notice along with each copy you distribute and you must not remove, alter,
-or obscure this notice.
-
-All other use, reproduction, modification, distribution, or other
-exploitation of these files is strictly prohibited, except as may be set
-forth in a separate written license agreement between you and New Relic.
-The terms of any such license agreement will control over this notice. The
-license stated above will be automatically terminated and revoked if you
-exceed its scope or violate any of the terms of this notice.
-
-This License does not grant permission to use the trade names, trademarks,
-service marks, or product names of New Relic, except as required for
-reasonable and customary use in describing the origin of this file and
-reproducing the content of this notice. You may not mark or brand this file
-with any trade name, trademarks, service marks, or product names other than
-the original brand (if any) provided by New Relic.
-
-Unless otherwise expressly agreed by New Relic in a separate written
-license agreement, these files are provided AS IS, WITHOUT WARRANTY OF ANY
-KIND, including without any implied warranties of MERCHANTABILITY, FITNESS
-FOR A PARTICULAR PURPOSE, TITLE, or NON-INFRINGEMENT. As a condition to
-your use of these files, you are solely responsible for such use. New Relic
-will have no liability to you for direct, indirect, consequential,
-incidental, special, or punitive damages or for lost profits or data.
diff --git a/import-layers/meta-virtualization/recipes-containers/cgroup-lite/cgroup-lite_1.11.bb b/import-layers/meta-virtualization/recipes-containers/cgroup-lite/cgroup-lite_1.11.bb
deleted file mode 100644
index 065d0ea..0000000
--- a/import-layers/meta-virtualization/recipes-containers/cgroup-lite/cgroup-lite_1.11.bb
+++ /dev/null
@@ -1,23 +0,0 @@
-SECTION = "devel"
-SUMMARY = "Light-weight package to set up cgroups at system boot."
-DESCRIPTION =  "Light-weight package to set up cgroups at system boot."
-HOMEPAGE = "http://packages.ubuntu.com/source/precise/cgroup-lite"
-LICENSE = "GPLv2"
-LIC_FILES_CHKSUM = "file://debian/copyright;md5=5d5da4e0867cf06014f87102154d0102"
-SRC_URI = "https://launchpad.net/ubuntu/+archive/primary/+files/cgroup-lite_1.11.tar.xz"
-SRC_URI += "file://cgroups-init"
-SRC_URI[md5sum] = "b20976194ee8fdb61e6b55281fb6ead4"
-SRC_URI[sha256sum] = "a79ab9ae6fb3ff3ce0aa5539b055c0379eaffdc6c5f003af4010fcea683c1a45"
-
-inherit allarch
-inherit update-rc.d
-
-INITSCRIPT_NAME = "cgroups-init"
-INITSCRIPT_PARAMS = "start 8 2 3 4 5 . stop 20 0 1 6 ."
-do_install() {
-	install -d ${D}/bin
-	install -d ${D}${sysconfdir}/init.d
-	install -m 0755 ${S}/scripts/cgroups-mount ${D}/bin
-	install -m 0755 ${S}/scripts/cgroups-umount ${D}/bin
-	install -m 0755 ${WORKDIR}/cgroups-init ${D}${sysconfdir}/init.d/cgroups-init
-}
diff --git a/import-layers/meta-virtualization/recipes-containers/cgroup-lite/files/cgroups-init b/import-layers/meta-virtualization/recipes-containers/cgroup-lite/files/cgroups-init
deleted file mode 100755
index e504024..0000000
--- a/import-layers/meta-virtualization/recipes-containers/cgroup-lite/files/cgroups-init
+++ /dev/null
@@ -1,27 +0,0 @@
-#!/bin/sh
-### BEGIN INIT INFO
-# Provides:          cgroups mount
-# Required-Start:    $network $remote_fs
-# Required-Stop:     $network $remote_fs
-# Default-Start:     2 3 4 5
-# Default-Stop:      0 1 6
-# Short-Description: mount/unmount cgroups
-### END INIT INFO
-
-# must start before libvirtd is run
-case "$1" in
-  start)
-        echo -n "Mounting cgroups..."
-		/bin/cgroups-mount
-        echo "Done"
-        ;;
-  stop)
-        echo -n "Unmounting cgroups..."
-		/bin/cgroups-umount
-        echo "Done"
-        ;;
-  *)
-        echo "Usage: /etc/init.d/cgroups-init {start|stop}"
-        exit 1
-        ;;
-esac
diff --git a/import-layers/meta-virtualization/recipes-containers/containerd/containerd-docker_git.bb b/import-layers/meta-virtualization/recipes-containers/containerd/containerd-docker_git.bb
deleted file mode 100644
index b18a9bb..0000000
--- a/import-layers/meta-virtualization/recipes-containers/containerd/containerd-docker_git.bb
+++ /dev/null
@@ -1,14 +0,0 @@
-SRCREV = "3addd840653146c90a254301d6c3a663c7fd6429"
-SRC_URI = "\
-	git://github.com/docker/containerd.git;branch=v0.2.x;destsuffix=git/src/github.com/containerd/containerd \
-	"
-
-include containerd.inc
-
-CONTAINERD_VERSION = "v0.2.x"
-S = "${WORKDIR}/git/src/github.com/containerd/containerd"
-
-PROVIDES += "virtual/containerd"
-RPROVIDES_${PN} = "virtual/containerd"
-
-DEPENDS += "btrfs-tools"
diff --git a/import-layers/meta-virtualization/recipes-containers/containerd/containerd-opencontainers_git.bb b/import-layers/meta-virtualization/recipes-containers/containerd/containerd-opencontainers_git.bb
deleted file mode 100644
index c6b4f5e..0000000
--- a/import-layers/meta-virtualization/recipes-containers/containerd/containerd-opencontainers_git.bb
+++ /dev/null
@@ -1,11 +0,0 @@
-SRCREV = "cfd04396dc68220d1cecbe686a6cc3aa5ce3667c"
-SRC_URI = "git://github.com/containerd/containerd;nobranch=1 \
-           file://0001-build-use-oe-provided-GO-and-flags.patch \
-          "
-
-include containerd.inc
-
-CONTAINERD_VERSION = "v1.0.2"
-
-PROVIDES += "virtual/containerd"
-RPROVIDES_${PN} = "virtual/containerd"
diff --git a/import-layers/meta-virtualization/recipes-containers/containerd/containerd.inc b/import-layers/meta-virtualization/recipes-containers/containerd/containerd.inc
deleted file mode 100644
index eb47cc9..0000000
--- a/import-layers/meta-virtualization/recipes-containers/containerd/containerd.inc
+++ /dev/null
@@ -1,90 +0,0 @@
-HOMEPAGE = "https://github.com/docker/containerd"
-SUMMARY = "containerd is a daemon to control runC"
-DESCRIPTION = "containerd is a daemon to control runC, built for performance and density. \
-               containerd leverages runC's advanced features such as seccomp and user namespace \
-               support as well as checkpoint and restore for cloning and live migration of containers."
-
-# Apache-2.0 for containerd
-LICENSE = "Apache-2.0"
-LIC_FILES_CHKSUM = "file://src/import/LICENSE.code;md5=aadc30f9c14d876ded7bedc0afd2d3d7"
-
-SRC_URI += "file://containerd.service"
-
-S = "${WORKDIR}/git"
-
-PV = "${CONTAINERD_VERSION}+git${SRCREV}"
-
-inherit go
-inherit goarch
-
-GO_IMPORT = "import"
-
-RRECOMMENDS_${PN} = "lxc docker"
-CONTAINERD_PKG="github.com/containerd/containerd"
-
-INSANE_SKIP_${PN} += "ldflags"
-
-do_configure[noexec] = "1"
-
-do_compile() {
-    export GOARCH="${TARGET_GOARCH}"
-
-    # link fixups for compilation
-    rm -f ${S}/src/import/vendor/src
-    ln -sf ./ ${S}/src/import/vendor/src
-
-    mkdir -p ${S}/src/import/vendor/src/github.com/containerd/containerd/
-    # without this, the stress test parts of the build fail
-    cp ${S}/src/import/*.go ${S}/src/import/vendor/src/github.com/containerd/containerd
-
-    for c in content errdefs fs images mount snapshots linux api runtimes defaults progress \
-		     protobuf reference diff platforms runtime remotes version archive dialer gc metadata \
-		     metrics filters identifiers labels leases plugin server services \
-		     cmd cio containers namespaces oci events log reaper sys rootfs; do
-	ln -sfn ${S}/src/import/${c} ${S}/src/import/vendor/github.com/containerd/containerd/${c}
-    done
-
-    export GOPATH="${S}/src/import/.gopath:${S}/src/import/vendor:${STAGING_DIR_TARGET}/${prefix}/local/go"
-    export GOROOT="${STAGING_DIR_NATIVE}/${nonarch_libdir}/${HOST_SYS}/go"
-
-    # Pass the needed cflags/ldflags so that cgo
-    # can find the needed headers files and libraries
-    export CGO_ENABLED="1"
-    export CGO_CFLAGS="${CFLAGS} --sysroot=${STAGING_DIR_TARGET}"
-    export CGO_LDFLAGS="${LDFLAGS} --sysroot=${STAGING_DIR_TARGET}"
-    export BUILDTAGS="no_btrfs static_build netgo"
-    export CFLAGS="${CFLAGS}"
-    export LDFLAGS="${LDFLAGS}"
-
-    cd ${S}/src/import
-    oe_runmake binaries
-}
-
-# Note: disabled for now, since docker is launching containerd
-# inherit systemd
-# SYSTEMD_PACKAGES = "${@bb.utils.contains('DISTRO_FEATURES','systemd','${PN}','',d)}"
-# SYSTEMD_SERVICE_${PN} = "${@bb.utils.contains('DISTRO_FEATURES','systemd','containerd.service','',d)}"
-
-do_install() {
-	mkdir -p ${D}/${bindir}
-
-	cp ${S}/src/import/bin/containerd ${D}/${bindir}/containerd
-	cp ${S}/src/import/bin/containerd-shim ${D}/${bindir}/containerd-shim
-	cp ${S}/src/import/bin/ctr ${D}/${bindir}/containerd-ctr
-	
-	ln -sf containerd ${D}/${bindir}/docker-containerd
-	ln -sf containerd-shim ${D}/${bindir}/docker-containerd-shim
-	ln -sf containerd-ctr ${D}/${bindir}/docker-containerd-ctr
-
-	if ${@bb.utils.contains('DISTRO_FEATURES','systemd','true','false',d)}; then
-		install -d ${D}${systemd_unitdir}/system
-		install -m 644 ${WORKDIR}/containerd.service ${D}/${systemd_unitdir}/system
-	        # adjust from /usr/local/bin to /usr/bin/
-		sed -e "s:/usr/local/bin/containerd:${bindir}/docker-containerd:g" -i ${D}/${systemd_unitdir}/system/containerd.service
-	fi
-}
-
-FILES_${PN} += "${systemd_system_unitdir}/*"
-
-INHIBIT_PACKAGE_STRIP = "1"
-INSANE_SKIP_${PN} += "ldflags already-stripped"
diff --git a/import-layers/meta-virtualization/recipes-containers/containerd/files/0001-build-use-oe-provided-GO-and-flags.patch b/import-layers/meta-virtualization/recipes-containers/containerd/files/0001-build-use-oe-provided-GO-and-flags.patch
deleted file mode 100644
index 75a984b..0000000
--- a/import-layers/meta-virtualization/recipes-containers/containerd/files/0001-build-use-oe-provided-GO-and-flags.patch
+++ /dev/null
@@ -1,26 +0,0 @@
-From e31acef290181434efaf47e70db7ad0d92dbe300 Mon Sep 17 00:00:00 2001
-From: Bruce Ashfield <bruce.ashfield@windriver.com>
-Date: Thu, 19 Apr 2018 17:09:51 -0400
-Subject: [PATCH] build: use oe provided GO and flags
-
-Signed-off-by: Bruce Ashfield <bruce.ashfield@windriver.com>
----
- Makefile | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/src/import/Makefile b/src/import/Makefile
-index 9d8cf8a18fbc..492d033fe2a7 100644
---- a/src/import/Makefile
-+++ b/src/import/Makefile
-@@ -134,7 +134,7 @@ bin/%: cmd/% FORCE
- 
- bin/containerd-shim: cmd/containerd-shim FORCE # set !cgo and omit pie for a static shim build: https://github.com/golang/go/issues/17789#issuecomment-258542220
- 	@echo "$(WHALE) bin/containerd-shim"
--	@CGO_ENABLED=0 go build -o bin/containerd-shim ${SHIM_GO_LDFLAGS} ${GO_TAGS} ./cmd/containerd-shim
-+	@$(GO) build -o bin/containerd-shim ${SHIM_GO_LDFLAGS} $(GOBUILDFLAGS) ${GO_TAGS} ./cmd/containerd-shim
- 
- binaries: $(BINARIES) ## build binaries
- 	@echo "$(WHALE) $@"
--- 
-2.4.0.53.g8440f74
-
diff --git a/import-layers/meta-virtualization/recipes-containers/containerd/files/containerd.service b/import-layers/meta-virtualization/recipes-containers/containerd/files/containerd.service
deleted file mode 100644
index 23633b0..0000000
--- a/import-layers/meta-virtualization/recipes-containers/containerd/files/containerd.service
+++ /dev/null
@@ -1,11 +0,0 @@
-[Unit]
-Description=containerd
-Documentation=https://containerd.tools
-After=network.target
-
-[Service]
-ExecStart=/usr/local/bin/containerd
-Delegate=yes
-
-[Install]
-WantedBy=multi-user.target
diff --git a/import-layers/meta-virtualization/recipes-containers/cri-o/cri-o_git.bb b/import-layers/meta-virtualization/recipes-containers/cri-o/cri-o_git.bb
deleted file mode 100644
index c14d54d..0000000
--- a/import-layers/meta-virtualization/recipes-containers/cri-o/cri-o_git.bb
+++ /dev/null
@@ -1,130 +0,0 @@
-HOMEPAGE = "https://github.com/kubernetes-incubator/cri-o"
-SUMMARY = "Open Container Initiative-based implementation of Kubernetes Container Runtime Interface"
-DESCRIPTION = "cri-o is meant to provide an integration path between OCI conformant \
-runtimes and the kubelet. Specifically, it implements the Kubelet Container Runtime \
-Interface (CRI) using OCI conformant runtimes. The scope of cri-o is tied to the scope of the CRI. \
-. \
-At a high level, we expect the scope of cri-o to be restricted to the following functionalities: \
-. \
- - Support multiple image formats including the existing Docker image format \
- - Support for multiple means to download images including trust & image verification \
- - Container image management (managing image layers, overlay filesystems, etc) \
- - Container process lifecycle management \
- - Monitoring and logging required to satisfy the CRI \
- - Resource isolation as required by the CRI \
- "
-
-SRCREV_cri-o = "65faae67828fb3eb3eac05b582aae9f9d1dea51c"
-SRC_URI = "\
-	git://github.com/kubernetes-incubator/cri-o.git;nobranch=1;name=cri-o \
-	file://0001-Makefile-force-symlinks.patch \
-        file://crio.conf \
-	"
-
-# Apache-2.0 for docker
-LICENSE = "Apache-2.0"
-LIC_FILES_CHKSUM = "file://src/import/LICENSE;md5=e3fc50a88d0a364313df4b21ef20c29e"
-
-GO_IMPORT = "import"
-
-PV = "1.0.0-rc3-dev+git${SRCREV_cri-o}"
-
-DEPENDS = " \
-    glib-2.0 \
-    btrfs-tools \
-    gpgme \
-    ostree \
-    libdevmapper \
-    "
-RDEPENDS_${PN} = " \
-    cni \
-    "
-
-PACKAGES =+ "${PN}-config"
-
-RDEPENDS_${PN} += " virtual/containerd virtual/runc"
-RDEPENDS_${PN} += " e2fsprogs-mke2fs"
-
-inherit systemd
-inherit go
-inherit goarch
-inherit pkgconfig
-
-EXTRA_OEMAKE="BUILDTAGS=''"
-
-do_compile() {
-	export GOARCH="${TARGET_GOARCH}"
-	export GOROOT="${STAGING_LIBDIR_NATIVE}/${TARGET_SYS}/go"
-	export GOPATH="${S}/src/import:${S}/src/import/vendor"
-
-	# Pass the needed cflags/ldflags so that cgo
-	# can find the needed headers files and libraries
-	export CGO_ENABLED="1"
-	export CFLAGS=""
-	export LDFLAGS=""
-	export CGO_CFLAGS="${BUILDSDK_CFLAGS} --sysroot=${STAGING_DIR_TARGET}"
-	export CGO_LDFLAGS="${BUILDSDK_LDFLAGS} --sysroot=${STAGING_DIR_TARGET}"
-
-	# link fixups for compilation
-	rm -f ${S}/src/import/vendor/src
-	ln -sf ./ ${S}/src/import/vendor/src
-
-	mkdir -p ${S}/src/import/vendor/github.com/kubernetes-incubator/cri-o
-	ln -sf ../../../../cmd ${S}/src/import/vendor/github.com/kubernetes-incubator/cri-o/cmd
-	ln -sf ../../../../test ${S}/src/import/vendor/github.com/kubernetes-incubator/cri-o/test
-	ln -sf ../../../../oci ${S}/src/import/vendor/github.com/kubernetes-incubator/cri-o/oci
-	ln -sf ../../../../server ${S}/src/import/vendor/github.com/kubernetes-incubator/cri-o/server
-	ln -sf ../../../../pkg ${S}/src/import/vendor/github.com/kubernetes-incubator/cri-o/pkg
-	ln -sf ../../../../libpod ${S}/src/import/vendor/github.com/kubernetes-incubator/cri-o/libpod
-	ln -sf ../../../../libkpod ${S}/src/import/vendor/github.com/kubernetes-incubator/cri-o/libkpod
-	ln -sf ../../../../utils ${S}/src/import/vendor/github.com/kubernetes-incubator/cri-o/utils
-
-	export GOPATH="${S}/src/import/.gopath:${S}/src/import/vendor:${STAGING_DIR_TARGET}/${prefix}/local/go"
-	export GOROOT="${STAGING_DIR_NATIVE}/${nonarch_libdir}/${HOST_SYS}/go"
-
-	# Pass the needed cflags/ldflags so that cgo
-	# can find the needed headers files and libraries
-	export CGO_ENABLED="1"
-	export CGO_CFLAGS="${CFLAGS} --sysroot=${STAGING_DIR_TARGET}"
-	export CGO_LDFLAGS="${LDFLAGS} --sysroot=${STAGING_DIR_TARGET}"
-
-	cd ${S}/src/import
-
-	oe_runmake binaries
-}
-
-SYSTEMD_PACKAGES = "${@bb.utils.contains('DISTRO_FEATURES','systemd','${PN}','',d)}"
-SYSTEMD_SERVICE_${PN} = "${@bb.utils.contains('DISTRO_FEATURES','systemd','crio.service','',d)}"
-SYSTEMD_AUTO_ENABLE_${PN} = "enable"
-
-do_install() {
-    localbindir="/usr/local/bin"
-
-    install -d ${D}${localbindir}
-    install -d ${D}/${libexecdir}/crio
-    install -d ${D}/${sysconfdir}/crio
-    install -d ${D}${systemd_unitdir}/system/
-
-    install ${WORKDIR}/crio.conf ${D}/${sysconfdir}/crio/crio.conf
-
-    # sample config files, they'll go in the ${PN}-config below
-    install -d ${D}/${sysconfdir}/crio/config/
-    install -m 755 -D ${S}/src/import/test/testdata/* ${D}/${sysconfdir}/crio/config/
-
-    install ${S}/src/import/crio ${D}/${localbindir}
-    install ${S}/src/import/crioctl ${D}/${localbindir}
-    install ${S}/src/import/kpod ${D}/${localbindir}
-
-    install ${S}/src/import/conmon/conmon ${D}/${libexecdir}/crio
-    install ${S}/src/import/pause/pause ${D}/${libexecdir}/crio
-
-    install -m 0644 ${S}/src/import/contrib/systemd/crio.service  ${D}${systemd_unitdir}/system/
-    install -m 0644 ${S}/src/import/contrib/systemd/crio-shutdown.service  ${D}${systemd_unitdir}/system/
-}
-
-FILES_${PN}-config = "${sysconfdir}/crio/config/*"
-FILES_${PN} += "${systemd_unitdir}/system/*"
-FILES_${PN} += "/usr/local/bin/*"
-
-INHIBIT_PACKAGE_STRIP = "1"
-INSANE_SKIP_${PN} += "ldflags already-stripped"
diff --git a/import-layers/meta-virtualization/recipes-containers/cri-o/files/0001-Makefile-force-symlinks.patch b/import-layers/meta-virtualization/recipes-containers/cri-o/files/0001-Makefile-force-symlinks.patch
deleted file mode 100644
index 320eac8..0000000
--- a/import-layers/meta-virtualization/recipes-containers/cri-o/files/0001-Makefile-force-symlinks.patch
+++ /dev/null
@@ -1,26 +0,0 @@
-From a4433978bf324525b4c260b0e9615ae27271fe55 Mon Sep 17 00:00:00 2001
-From: Bruce Ashfield <bruce.ashfield@windriver.com>
-Date: Wed, 20 Sep 2017 12:05:40 -0400
-Subject: [PATCH] Makefile: force symlinks
-
-Signed-off-by: Bruce Ashfield <bruce.ashfield@windriver.com>
----
- Makefile | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/src/import/Makefile b/src/import/Makefile
-index e3e5050bb7f6..4ad3fb7ff0a9 100644
---- a/src/import/Makefile
-+++ b/src/import/Makefile
-@@ -53,7 +53,7 @@ help:
- .gopathok:
- ifeq ("$(wildcard $(GOPKGDIR))","")
- 	mkdir -p "$(GOPKGBASEDIR)"
--	ln -s "$(CURDIR)" "$(GOPKGBASEDIR)"
-+	ln -sf "$(CURDIR)" "$(GOPKGBASEDIR)"
- endif
- 	touch "$(GOPATH)/.gopathok"
- 
--- 
-2.4.0.53.g8440f74
-
diff --git a/import-layers/meta-virtualization/recipes-containers/cri-o/files/crio.conf b/import-layers/meta-virtualization/recipes-containers/cri-o/files/crio.conf
deleted file mode 100644
index 51d7f40..0000000
--- a/import-layers/meta-virtualization/recipes-containers/cri-o/files/crio.conf
+++ /dev/null
@@ -1,147 +0,0 @@
-# generated via: crio --config="" config --default
-
-# The "crio" table contains all of the server options.
-[crio]
-
-# root is a path to the "root directory". CRIO stores all of its data,
-# including container images, in this directory.
-root = "/var/lib/containers/storage"
-
-# run is a path to the "run directory". CRIO stores all of its state
-# in this directory.
-runroot = "/var/run/containers/storage"
-
-# storage_driver select which storage driver is used to manage storage
-# of images and containers.
-storage_driver = ""
-
-# storage_option is used to pass an option to the storage driver.
-storage_option = [
-]
-
-# The "crio.api" table contains settings for the kubelet/gRPC
-# interface (which is also used by crioctl).
-[crio.api]
-
-# listen is the path to the AF_LOCAL socket on which crio will listen.
-listen = "/var/run/crio.sock"
-
-# stream_address is the IP address on which the stream server will listen
-stream_address = ""
-
-# stream_port is the port on which the stream server will listen
-stream_port = "10010"
-
-# file_locking is whether file-based locking will be used instead of
-# in-memory locking
-file_locking = true
-
-# The "crio.runtime" table contains settings pertaining to the OCI
-# runtime used and options for how to set up and manage the OCI runtime.
-[crio.runtime]
-
-# runtime is the OCI compatible runtime used for trusted container workloads.
-# This is a mandatory setting as this runtime will be the default one
-# and will also be used for untrusted container workloads if
-# runtime_untrusted_workload is not set.
-runtime = "/usr/bin/runc"
-
-# runtime_untrusted_workload is the OCI compatible runtime used for untrusted
-# container workloads. This is an optional setting, except if
-# default_container_trust is set to "untrusted".
-runtime_untrusted_workload = ""
-
-# default_workload_trust is the default level of trust crio puts in container
-# workloads. It can either be "trusted" or "untrusted", and the default
-# is "trusted".
-# Containers can be run through different container runtimes, depending on
-# the trust hints we receive from kubelet:
-# - If kubelet tags a container workload as untrusted, crio will try first to
-# run it through the untrusted container workload runtime. If it is not set,
-# crio will use the trusted runtime.
-# - If kubelet does not provide any information about the container workload trust
-# level, the selected runtime will depend on the default_container_trust setting.
-# If it is set to "untrusted", then all containers except for the host privileged
-# ones, will be run by the runtime_untrusted_workload runtime. Host privileged
-# containers are by definition trusted and will always use the trusted container
-# runtime. If default_container_trust is set to "trusted", crio will use the trusted
-# container runtime for all containers.
-default_workload_trust = "trusted"
-
-# conmon is the path to conmon binary, used for managing the runtime.
-conmon = "/usr/libexec/crio/conmon"
-
-# conmon_env is the environment variable list for conmon process,
-# used for passing necessary environment variable to conmon or runtime.
-conmon_env = [
-	"PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin",
-]
-
-# selinux indicates whether or not SELinux will be used for pod
-# separation on the host. If you enable this flag, SELinux must be running
-# on the host.
-selinux = false
-
-# seccomp_profile is the seccomp json profile path which is used as the
-# default for the runtime.
-seccomp_profile = "/etc/crio/seccomp.json"
-
-# apparmor_profile is the apparmor profile name which is used as the
-# default for the runtime.
-apparmor_profile = "crio-default"
-
-# cgroup_manager is the cgroup management implementation to be used
-# for the runtime.
-cgroup_manager = "cgroupfs"
-
-# hooks_dir_path is the oci hooks directory for automatically executed hooks
-hooks_dir_path = "/usr/share/containers/oci/hooks.d"
-
-# pids_limit is the number of processes allowed in a container
-pids_limit = 1024
-
-# The "crio.image" table contains settings pertaining to the
-# management of OCI images.
-[crio.image]
-
-# default_transport is the prefix we try prepending to an image name if the
-# image name as we receive it can't be parsed as a valid source reference
-default_transport = "docker://"
-
-# pause_image is the image which we use to instantiate infra containers.
-pause_image = "kubernetes/pause"
-
-# pause_command is the command to run in a pause_image to have a container just
-# sit there.  If the image contains the necessary information, this value need
-# not be specified.
-pause_command = "/pause"
-
-# signature_policy is the name of the file which decides what sort of policy we
-# use when deciding whether or not to trust an image that we've pulled.
-# Outside of testing situations, it is strongly advised that this be left
-# unspecified so that the default system-wide policy will be used.
-signature_policy = ""
-
-# image_volumes controls how image volumes are handled.
-# The valid values are mkdir and ignore.
-image_volumes = "mkdir"
-
-# insecure_registries is used to skip TLS verification when pulling images.
-insecure_registries = [
-]
-
-# registries is used to specify a comma separated list of registries to be used
-# when pulling an unqualified image (e.g. fedora:rawhide).
-registries = [
-]
-
-# The "crio.network" table contains settings pertaining to the
-# management of CNI plugins.
-[crio.network]
-
-# network_dir is is where CNI network configuration
-# files are stored.
-network_dir = "/etc/cni/net.d/"
-
-# plugin_dir is is where CNI plugin binaries are stored.
-plugin_dir = "/opt/cni/bin/"
diff --git a/import-layers/meta-virtualization/recipes-containers/criu/criu_git.bb b/import-layers/meta-virtualization/recipes-containers/criu/criu_git.bb
deleted file mode 100644
index 7d62f35..0000000
--- a/import-layers/meta-virtualization/recipes-containers/criu/criu_git.bb
+++ /dev/null
@@ -1,86 +0,0 @@
-SUMMARY = "CRIU"
-DESCRIPTION = "Checkpoint/Restore In Userspace, or CRIU, is a software tool for \
-Linux operating system. Using this tool, you can freeze a running application \
-(or part of it) and checkpoint it to a hard drive as a collection of files. \
-You can then use the files to restore and run the application from the point \
-it was frozen at. The distinctive feature of the CRIU project is that it is \
-mainly implemented in user space"
-HOMEPAGE = "http://criu.org"
-SECTION = "console/tools"
-LICENSE = "GPLv2"
-
-EXCLUDE_FROM_WORLD = "1"
-
-LIC_FILES_CHKSUM = "file://COPYING;md5=412de458544c1cb6a2b512cd399286e2"
-
-SRCREV = "a31c1854e10580a09621e539c3ec052b875a8e06"
-PV = "3.4+git${SRCPV}"
-
-SRC_URI = "git://github.com/xemul/criu.git;protocol=git \
-           file://0001-criu-Fix-toolchain-hardcode.patch \
-           file://0002-criu-Skip-documentation-install.patch \
-           file://0001-criu-Change-libraries-install-directory.patch \
-           file://lib-Makefile-overwrite-install-lib-to-allow-multiarc.patch \
-           file://fix-building-on-newest-glibc-and-kernel.patch \
-          "
-
-COMPATIBLE_HOST = "(x86_64|arm|aarch64).*-linux"
-
-DEPENDS += "libnl libcap protobuf-c-native protobuf-c util-linux-native libbsd libnet"
-RDEPENDS_${PN} = "bash"
-
-S = "${WORKDIR}/git"
-
-#
-# CRIU just can be built on ARMv7 and ARMv6, so the Makefile check
-# if the ARCH is ARMv7 or ARMv6.
-# ARM BSPs need set CRIU_BUILD_ARCH variable for building CRIU.
-#
-EXTRA_OEMAKE_arm += "ARCH=arm UNAME-M=${CRIU_BUILD_ARCH} WERROR=0"
-EXTRA_OEMAKE_x86-64 += "ARCH=x86 WERROR=0"
-EXTRA_OEMAKE_aarch64 += "ARCH=arm64 WERROR=0"
-
-EXTRA_OEMAKE_append += "SBINDIR=${sbindir} LIBDIR=${libdir} INCLUDEDIR=${includedir} PIEGEN=no"
-EXTRA_OEMAKE_append += "LOGROTATEDIR=${sysconfdir} SYSTEMDUNITDIR=${systemd_unitdir}"
-
-CFLAGS += "-D__USE_GNU -D_GNU_SOURCE " 
-
-CFLAGS += " -I${STAGING_INCDIR} -I${STAGING_INCDIR}/libnl3"
-
-# overide LDFLAGS to allow criu to build without: "x86_64-poky-linux-ld: unrecognized option '-Wl,-O1'"
-export LDFLAGS=""
-
-export BUILD_SYS
-export HOST_SYS
-
-inherit setuptools
-
-PACKAGECONFIG ??= ""
-PACKAGECONFIG[selinux] = ",,libselinux"
-
-CLEANBROKEN = "1"
-
-do_compile_prepend() {
-    rm -rf ${S}/images/google/protobuf/descriptor.proto
-    ln -s  ${PKG_CONFIG_SYSROOT_DIR}/usr/include/google/protobuf/descriptor.proto ${S}/images/google/protobuf/descriptor.proto
-}
-
-do_compile () {
-	oe_runmake
-}
-
-do_install () {
-    export INSTALL_LIB="${libdir}/${PYTHON_DIR}/site-packages"
-    oe_runmake PREFIX=${exec_prefix} LIBDIR=${libdir} DESTDIR="${D}" install
-}
-
-FILES_${PN} += "${systemd_unitdir}/ \
-            ${libdir}/python2.7/site-packages/ \
-            ${libdir}/pycriu/ \
-            ${libdir}/crit-0.0.1-py2.7.egg-info \
-            "
-
-FILES_${PN}-staticdev += " \
-            ${libexecdir}/compel/std.lib.a \
-            ${libexecdir}/compel/fds.lib.a \
-            "
diff --git a/import-layers/meta-virtualization/recipes-containers/criu/files/0001-criu-Change-libraries-install-directory.patch b/import-layers/meta-virtualization/recipes-containers/criu/files/0001-criu-Change-libraries-install-directory.patch
deleted file mode 100644
index afb1332..0000000
--- a/import-layers/meta-virtualization/recipes-containers/criu/files/0001-criu-Change-libraries-install-directory.patch
+++ /dev/null
@@ -1,38 +0,0 @@
-From f64fbca70e6049dad3c404d871f2383d97725d2d Mon Sep 17 00:00:00 2001
-From: Mark Asselstine <mark.asselstine@windriver.com>
-Date: Fri, 8 Sep 2017 15:11:31 -0400
-Subject: [PATCH] criu: Change libraries install directory
-
-Install the libraries into /usr/lib(or /usr/lib64)
-
-Signed-off-by: Jianchuan Wang <jianchuan.wang@windriver.com>
-Signed-off-by: Mark Asselstine <mark.asselstine@windriver.com>
-
----
- Makefile.install | 13 -------------
- 1 file changed, 13 deletions(-)
-
-diff --git a/Makefile.install b/Makefile.install
-index 1def3cf..d020eef 100644
---- a/Makefile.install
-+++ b/Makefile.install
-@@ -9,19 +9,6 @@ LIBEXECDIR	?= $(PREFIX)/libexec
- RUNDIR		?= /run
- 
- #
--# For recent Debian/Ubuntu with multiarch support.
--DEB_HOST_MULTIARCH := $(shell dpkg-architecture -qDEB_HOST_MULTIARCH 2>/dev/null)
--ifneq "$(DEB_HOST_MULTIARCH)" ""
--        LIBDIR			?= $(PREFIX)/lib/$(DEB_HOST_MULTIARCH)
--else
--        #
--        # For most other systems
--        ifeq "$(shell uname -m)" "x86_64"
--                LIBDIR		?= $(PREFIX)/lib64
--        endif
--endif
--
--#
- # LIBDIR falls back to the standard path.
- LIBDIR ?= $(PREFIX)/lib
- 
diff --git a/import-layers/meta-virtualization/recipes-containers/criu/files/0001-criu-Fix-toolchain-hardcode.patch b/import-layers/meta-virtualization/recipes-containers/criu/files/0001-criu-Fix-toolchain-hardcode.patch
deleted file mode 100644
index d1f136c..0000000
--- a/import-layers/meta-virtualization/recipes-containers/criu/files/0001-criu-Fix-toolchain-hardcode.patch
+++ /dev/null
@@ -1,99 +0,0 @@
-From c005b7a4874f55df687ff22bc425551775581421 Mon Sep 17 00:00:00 2001
-From: Mark Asselstine <mark.asselstine@windriver.com>
-Date: Fri, 8 Sep 2017 15:02:14 -0400
-Subject: [PATCH] criu: Fix toolchain hardcode
-
-Replace ":=" to "?=" so that the toolchain used by bitbake build system will
-be taken.
-
-Signed-off-by: Yang Shi <yang.shi@windriver.com>
-Signed-off-by: Jianchuan Wang <jianchuan.wang@windriver.com>
-Signed-off-by: Mark Asselstine <mark.asselstine@windriver.com>
-
----
- Makefile                       |  2 +-
- scripts/nmk/scripts/include.mk |  2 +-
- scripts/nmk/scripts/tools.mk   | 40 ++++++++++++++++++++--------------------
- 3 files changed, 22 insertions(+), 22 deletions(-)
-
-diff --git a/Makefile b/Makefile
-index f2583a2..d7f51e5 100644
---- a/Makefile
-+++ b/Makefile
-@@ -17,7 +17,7 @@ ifeq ($(origin HOSTCFLAGS), undefined)
-         HOSTCFLAGS := $(CFLAGS) $(USERCFLAGS)
- endif
- 
--UNAME-M := $(shell uname -m)
-+UNAME-M ?= $(shell uname -m)
- 
- #
- # Supported Architectures
-diff --git a/scripts/nmk/scripts/include.mk b/scripts/nmk/scripts/include.mk
-index 04ccb3a..0d63bc7 100644
---- a/scripts/nmk/scripts/include.mk
-+++ b/scripts/nmk/scripts/include.mk
-@@ -20,7 +20,7 @@ SUBARCH := $(shell uname -m | sed       \
-                 -e s/aarch64.*/aarch64/)
- 
- ARCH		?= $(SUBARCH)
--SRCARCH 	:= $(ARCH)
-+SRCARCH 	?= $(ARCH)
- 
- export SUBARCH ARCH SRCARCH
- 
-diff --git a/scripts/nmk/scripts/tools.mk b/scripts/nmk/scripts/tools.mk
-index 56dba84..1698821 100644
---- a/scripts/nmk/scripts/tools.mk
-+++ b/scripts/nmk/scripts/tools.mk
-@@ -2,30 +2,30 @@ ifndef ____nmk_defined__tools
- 
- #
- # System tools shorthands
--RM		:= rm -f
-+RM		?= rm -f
- HOSTLD		?= ld
--LD		:= $(CROSS_COMPILE)$(HOSTLD)
-+LD		?= $(CROSS_COMPILE)$(HOSTLD)
- HOSTCC		?= gcc
--CC		:= $(CROSS_COMPILE)$(HOSTCC)
--CPP		:= $(CC) -E
--AS		:= $(CROSS_COMPILE)as
--AR		:= $(CROSS_COMPILE)ar
--STRIP		:= $(CROSS_COMPILE)strip
--OBJCOPY		:= $(CROSS_COMPILE)objcopy
--OBJDUMP		:= $(CROSS_COMPILE)objdump
--NM		:= $(CROSS_COMPILE)nm
--MAKE		:= make
--MKDIR		:= mkdir -p
--AWK		:= awk
--PERL		:= perl
--PYTHON		:= python
--FIND		:= find
--SH		:= $(shell if [ -x "$$BASH" ]; then echo $$BASH;        \
-+CC		?= $(CROSS_COMPILE)$(HOSTCC)
-+CPP		?= $(CC) -E
-+AS		?= $(CROSS_COMPILE)as
-+AR		?= $(CROSS_COMPILE)ar
-+STRIP		?= $(CROSS_COMPILE)strip
-+OBJCOPY		?= $(CROSS_COMPILE)objcopy
-+OBJDUMP		?= $(CROSS_COMPILE)objdump
-+NM		?= $(CROSS_COMPILE)nm
-+MAKE		?= make
-+MKDIR		?= mkdir -p
-+AWK		?= awk
-+PERL		?= perl
-+PYTHON		?= python
-+FIND		?= find
-+SH		?= $(shell if [ -x "$$BASH" ]; then echo $$BASH;        \
-                         else if [ -x /bin/bash ]; then echo /bin/bash;  \
-                         else echo sh; fi ; fi)
--CSCOPE		:= cscope
--ETAGS		:= etags
--CTAGS		:= ctags
-+CSCOPE		?= cscope
-+ETAGS		?= etags
-+CTAGS		?= ctags
- 
- export RM HOSTLD LD HOSTCC CC CPP AS AR STRIP OBJCOPY OBJDUMP
- export NM SH MAKE MKDIR AWK PERL PYTHON SH CSCOPE
diff --git a/import-layers/meta-virtualization/recipes-containers/criu/files/0002-criu-Skip-documentation-install.patch b/import-layers/meta-virtualization/recipes-containers/criu/files/0002-criu-Skip-documentation-install.patch
deleted file mode 100644
index af45db7..0000000
--- a/import-layers/meta-virtualization/recipes-containers/criu/files/0002-criu-Skip-documentation-install.patch
+++ /dev/null
@@ -1,26 +0,0 @@
-From 45d74ae8a314c481398ba91a3697ffbd074cd98b Mon Sep 17 00:00:00 2001
-From: Jianchuan Wang <jianchuan.wang@windriver.com>
-Date: Tue, 16 Aug 2016 09:42:24 +0800
-Subject: [PATCH] criu: Skip documentation install
-
-asciidoc is needed to generate CRIU documentation, so skip it in install.
-
-Signed-off-by: Jianchuan Wang <jianchuan.wang@windriver.com>
-
----
- Makefile.install | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/Makefile.install b/Makefile.install
-index 3987bcc..1def3cf 100644
---- a/Makefile.install
-+++ b/Makefile.install
-@@ -29,7 +29,7 @@ export PREFIX BINDIR SBINDIR MANDIR RUNDIR
- export LIBDIR INCLUDEDIR LIBEXECDIR
- 
- install-man:
--	$(Q) $(MAKE) -C Documentation install
-+#	$(Q) $(MAKE) -C Documentation install
- .PHONY: install-man
- 
- install-lib: lib
diff --git a/import-layers/meta-virtualization/recipes-containers/criu/files/fix-building-on-newest-glibc-and-kernel.patch b/import-layers/meta-virtualization/recipes-containers/criu/files/fix-building-on-newest-glibc-and-kernel.patch
deleted file mode 100644
index 9361adc..0000000
--- a/import-layers/meta-virtualization/recipes-containers/criu/files/fix-building-on-newest-glibc-and-kernel.patch
+++ /dev/null
@@ -1,45 +0,0 @@
-From b59947007362b53e9f41f1e5a33071dedf1c59ac Mon Sep 17 00:00:00 2001
-From: Adrian Reber <areber@redhat.com>
-Date: Thu, 28 Sep 2017 09:13:33 +0000
-Subject: [PATCH] fix building on newest glibc and kernel
-
-On Fedora rawhide with kernel-headers-4.14.0-0.rc2.git0.1.fc28.x86_64
-glibc-devel-2.26.90-15.fc28.x86_64 criu does not build any more:
-
-In file included from /usr/include/linux/aio_abi.h:31:0,
-                 from criu/cr-check.c:24:
-/usr/include/sys/mount.h:35:3: error: expected identifier before numeric constant
-   MS_RDONLY = 1,  /* Mount read-only.  */
-   ^
-make[2]: *** [/builddir/build/BUILD/criu-3.5/scripts/nmk/scripts/build.mk:111: criu/cr-check.o] Error 1
-make[1]: *** [criu/Makefile:73: criu/built-in.o] Error 2
-make: *** [Makefile:233: criu] Error 2
-
-This simple re-ordering of includes fixes it for me.
-
-Signed-off-by: Adrian Reber <areber@redhat.com>
-Signed-off-by: Andrei Vagin <avagin@virtuozzo.com>
-
-Upstream-Status: Backport
-[https://github.com/checkpoint-restore/criu/commit/f41e386d4d40e3e26b0cfdc85a812b7edb337f1d#diff-cc847b1cc975358c6582595be92d48db]
-
-Signed-off-by: Yi Zhao <yi.zhao@windriver.com>
-
----
- criu/cr-check.c | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/criu/cr-check.c b/criu/cr-check.c
-index 1dd887a..93df2ab 100644
---- a/criu/cr-check.c
-+++ b/criu/cr-check.c
-@@ -21,8 +21,8 @@
- #include <netinet/in.h>
- #include <sys/prctl.h>
- #include <sched.h>
--#include <linux/aio_abi.h>
- #include <sys/mount.h>
-+#include <linux/aio_abi.h>
- 
- #include "../soccr/soccr.h"
- 
diff --git a/import-layers/meta-virtualization/recipes-containers/criu/files/lib-Makefile-overwrite-install-lib-to-allow-multiarc.patch b/import-layers/meta-virtualization/recipes-containers/criu/files/lib-Makefile-overwrite-install-lib-to-allow-multiarc.patch
deleted file mode 100644
index 59e7bcb..0000000
--- a/import-layers/meta-virtualization/recipes-containers/criu/files/lib-Makefile-overwrite-install-lib-to-allow-multiarc.patch
+++ /dev/null
@@ -1,28 +0,0 @@
-From 6caf90592d61c8c45b32cb7ff76709f9326030e2 Mon Sep 17 00:00:00 2001
-From: Mark Asselstine <mark.asselstine@windriver.com>
-Date: Fri, 8 Sep 2017 15:40:49 -0400
-Subject: [PATCH] lib/Makefile: overwrite install-lib, to allow multiarch
-
-I am not sure why Yocto installs python modules in arch specific
-/usr/libXX directories but it does. Allow the recipe to pass this via
-INSTALL_LIB.
-
-Signed-off-by: Mark Asselstine <mark.asselstine@windriver.com>
-
----
- lib/Makefile | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/lib/Makefile b/lib/Makefile
-index b1bb057..06f5c5d 100644
---- a/lib/Makefile
-+++ b/lib/Makefile
-@@ -56,7 +56,7 @@ install: lib-c lib-py crit/crit lib/c/criu.pc.in
- 	$(Q) sed -e 's,@version@,$(CRIU_VERSION),' -e 's,@libdir@,$(LIBDIR),' -e 's,@includedir@,$(dir $(INCLUDEDIR)/criu/),' lib/c/criu.pc.in > lib/c/criu.pc
- 	$(Q) install -m 644 lib/c/criu.pc $(DESTDIR)$(LIBDIR)/pkgconfig
- 	$(E) "  INSTALL " crit
--	$(Q) $(PYTHON_BIN) scripts/crit-setup.py install --prefix=$(DESTDIR)$(PREFIX) --record $(CRIT_SETUP_FILES)
-+	$(Q) $(PYTHON_BIN) scripts/crit-setup.py install --prefix=$(DESTDIR)$(PREFIX) --record $(CRIT_SETUP_FILES) --install-lib=$(DESTDIR)$(INSTALL_LIB)
- .PHONY: install
- 
- uninstall:
diff --git a/import-layers/meta-virtualization/recipes-containers/docker-compose/files/0001-Allow-newer-versions-of-requests.patch b/import-layers/meta-virtualization/recipes-containers/docker-compose/files/0001-Allow-newer-versions-of-requests.patch
deleted file mode 100644
index 6fc7bb4..0000000
--- a/import-layers/meta-virtualization/recipes-containers/docker-compose/files/0001-Allow-newer-versions-of-requests.patch
+++ /dev/null
@@ -1,32 +0,0 @@
-From 15cf1a31f5af8f09531bb837b92bd6ea49bd1744 Mon Sep 17 00:00:00 2001
-From: Pascal Bach <pascal.bach@siemens.com>
-Date: Wed, 13 Sep 2017 08:41:21 +0200
-Subject: [PATCH] Allow newer versions of requests
-
-docker compose has strict requirements to use requests < 2.12
-
-However it works without issues with newer versions, so this patch removes the check.
-
-Upstream-Status: Pending
-
-Signed-off-by: Pascal Bach <pascal.bach@siemens.com>
----
- setup.py | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/setup.py b/setup.py
-index 192a0f6..f444757 100644
---- a/setup.py
-+++ b/setup.py
-@@ -33,7 +33,7 @@ install_requires = [
-     'cached-property >= 1.2.0, < 2',
-     'docopt >= 0.6.1, < 0.7',
-     'PyYAML >= 3.10, < 4',
--    'requests >= 2.6.1, != 2.11.0, < 2.12',
-+    'requests >= 2.6.1, != 2.11.0',
-     'texttable >= 0.9.0, < 0.10',
-     'websocket-client >= 0.32.0, < 1.0',
-     'docker >= 2.5.1, < 3.0',
--- 
-2.1.4
-
diff --git a/import-layers/meta-virtualization/recipes-containers/docker-compose/python3-docker-compose_1.16.1.bb b/import-layers/meta-virtualization/recipes-containers/docker-compose/python3-docker-compose_1.16.1.bb
deleted file mode 100644
index 851c251..0000000
--- a/import-layers/meta-virtualization/recipes-containers/docker-compose/python3-docker-compose_1.16.1.bb
+++ /dev/null
@@ -1,31 +0,0 @@
-SUMMARY = "Multi-container orchestration for Docker"
-HOMEPAGE = "https://www.docker.com/"
-LICENSE = "Apache-2.0"
-LIC_FILES_CHKSUM = "file://LICENSE;md5=435b266b3899aa8a959f17d41c56def8"
-
-SRC_URI += "file://0001-Allow-newer-versions-of-requests.patch"
-
-inherit pypi setuptools3
-
-SRC_URI[md5sum] = "8dcadf09143600fcb573b43f446c8f9a"
-SRC_URI[sha256sum] = "fb46a6a2c4d193a3ff1e4d7208eea920b629c81dc92257c87f3f93095cfb0bdf"
-
-RDEPENDS_${PN} = "\
-  ${PYTHON_PN}-cached-property \
-  ${PYTHON_PN}-certifi \
-  ${PYTHON_PN}-chardet \
-  ${PYTHON_PN}-colorama \
-  ${PYTHON_PN}-docker \
-  ${PYTHON_PN}-docker-pycreds \
-  ${PYTHON_PN}-dockerpty \
-  ${PYTHON_PN}-docopt \
-  ${PYTHON_PN}-idna \
-  ${PYTHON_PN}-jsonschema \
-  ${PYTHON_PN}-pyyaml \
-  ${PYTHON_PN}-requests \
-  ${PYTHON_PN}-six \
-  ${PYTHON_PN}-terminal \
-  ${PYTHON_PN}-texttable \
-  ${PYTHON_PN}-urllib3 \
-  ${PYTHON_PN}-websocket-client \
-  "
diff --git a/import-layers/meta-virtualization/recipes-containers/docker-distribution/docker-distribution_git.bb b/import-layers/meta-virtualization/recipes-containers/docker-distribution/docker-distribution_git.bb
deleted file mode 100644
index add5ce1..0000000
--- a/import-layers/meta-virtualization/recipes-containers/docker-distribution/docker-distribution_git.bb
+++ /dev/null
@@ -1,68 +0,0 @@
-HOMEPAGE = "http://github.com/docker/distribution"
-SUMMARY = "The Docker toolset to pack, ship, store, and deliver content"
-LICENSE = "Apache-2.0"
-LIC_FILES_CHKSUM = "file://LICENSE;md5=d2794c0df5b907fdace235a619d80314"
-
-SRCREV_distribution="48294d928ced5dd9b378f7fd7c6f5da3ff3f2c89"
-SRC_URI = "git://github.com/docker/distribution.git;branch=release/2.6;name=distribution;destsuffix=git/src/github.com/docker/distribution \
-           file://docker-registry.service \
-          "
-
-PACKAGES =+ "docker-registry"
-
-PV = "v2.6.2"
-S = "${WORKDIR}/git/src/github.com/docker/distribution"
-
-GO_IMPORT = "import"
-
-inherit goarch
-inherit go
-
-# This disables seccomp and apparmor, which are on by default in the
-# go package. 
-EXTRA_OEMAKE="BUILDTAGS=''"
-
-do_compile() {
-	export GOARCH="${TARGET_GOARCH}"
-	export GOPATH="${WORKDIR}/git/"
-	export GOROOT="${STAGING_LIBDIR_NATIVE}/${TARGET_SYS}/go"
-	# Pass the needed cflags/ldflags so that cgo
-	# can find the needed headers files and libraries
-	export CGO_ENABLED="1"
-	export CFLAGS=""
-	export LDFLAGS=""
-	export CGO_CFLAGS="${BUILDSDK_CFLAGS} --sysroot=${STAGING_DIR_TARGET}"
-	export GO_GCFLAGS=""
-	export CGO_LDFLAGS="${BUILDSDK_LDFLAGS} --sysroot=${STAGING_DIR_TARGET}"
-
-	cd ${S}
-
-	oe_runmake binaries
-}
-
-do_install() {
-	install -d ${D}/${sbindir}
-	install ${S}/bin/registry ${D}/${sbindir}
-
-	if ${@bb.utils.contains('DISTRO_FEATURES','systemd','true','false',d)}; then
-	    install -d ${D}${systemd_unitdir}/system
-	    install -m 644 ${WORKDIR}/docker-registry.service ${D}/${systemd_unitdir}/system
-	fi
-
-	install -d ${D}/${sysconfdir}/docker-distribution/registry/
-	install ${S}/cmd/registry/config-example.yml ${D}/${sysconfdir}/docker-distribution/registry/config.yml
-
-	# storage for the registry containers
-	install -d ${D}/${localstatedir}/lib/registry/
-}
-
-INSANE_SKIP_${PN} += "ldflags already-stripped"
-INSANE_SKIP_docker-registry += "ldflags already-stripped"
-
-FILES_docker-registry = "${sbindir}/*"
-FILES_docker-registry += "${systemd_unitdir}/system/docker-registry.service"
-FILES_docker-registry += "${sysconfdir}/docker-distribution/*"
-FILES_docker-registry += "${localstatedir}/lib/registry/"
-
-SYSTEMD_SERVICE_docker-registry = "${@bb.utils.contains('DISTRO_FEATURES','systemd','docker-registry.service','',d)}"
-SYSTEMD_AUTO_ENABLE_docker-registry = "enable"
diff --git a/import-layers/meta-virtualization/recipes-containers/docker-distribution/files/docker-registry.service b/import-layers/meta-virtualization/recipes-containers/docker-distribution/files/docker-registry.service
deleted file mode 100644
index 15460c7..0000000
--- a/import-layers/meta-virtualization/recipes-containers/docker-distribution/files/docker-registry.service
+++ /dev/null
@@ -1,10 +0,0 @@
-[Unit]
-Description=v2 Registry server for Docker
-
-[Service]
-Type=simple
-ExecStart=/usr/sbin/registry serve /etc/docker-distribution/registry/config.yml
-Restart=on-failure
-
-[Install]
-WantedBy=multi-user.target
diff --git a/import-layers/meta-virtualization/recipes-containers/docker/docker-ce_git.bb b/import-layers/meta-virtualization/recipes-containers/docker/docker-ce_git.bb
deleted file mode 100644
index 0dfda5f..0000000
--- a/import-layers/meta-virtualization/recipes-containers/docker/docker-ce_git.bb
+++ /dev/null
@@ -1,172 +0,0 @@
-HOMEPAGE = "http://www.docker.com"
-SUMMARY = "Linux container runtime"
-DESCRIPTION = "Linux container runtime \
- Docker complements kernel namespacing with a high-level API which \
- operates at the process level. It runs unix processes with strong \
- guarantees of isolation and repeatability across servers. \
- . \
- Docker is a great building block for automating distributed systems: \
- large-scale web deployments, database clusters, continuous deployment \
- systems, private PaaS, service-oriented architectures, etc. \
- . \
- This package contains the daemon and client. Using docker.io is \
- officially supported on x86_64 and arm (32-bit) hosts. \
- Other architectures are considered experimental. \
- . \
- Also, note that kernel version 3.10 or above is required for proper \
- operation of the daemon process, and that any lower versions may have \
- subtle and/or glaring issues. \
- "
-
-SRCREV_docker = "0520e243029d1361649afb0706a1c5d9a1c012b8"
-SRCREV_libnetwork = "4cb38c2987c236dce03c868d99b57b1e28a4b81c"
-SRCREV_cli = "0f1bb353423e45e02315e985bd9ddebe6da18457"
-SRC_URI = "\
-	git://github.com/docker/docker-ce.git;nobranch=1;name=docker \
-	git://github.com/docker/libnetwork.git;branch=master;name=libnetwork;destsuffix=libnetwork \
-	git://github.com/docker/cli;branch=master;name=cli;destsuffix=cli \
-	file://docker.init \
-	file://hi.Dockerfile \
-	"
-
-# Apache-2.0 for docker
-LICENSE = "Apache-2.0"
-LIC_FILES_CHKSUM = "file://src/import/components/engine/LICENSE;md5=9740d093a080530b5c5c6573df9af45a"
-
-GO_IMPORT = "import"
-
-S = "${WORKDIR}/git"
-
-DOCKER_VERSION = "18.03.0-ce"
-PV = "${DOCKER_VERSION}+git${SRCREV_docker}"
-
-DEPENDS = " \
-    go-cli \
-    go-pty \
-    go-context \
-    go-mux \
-    go-patricia \
-    go-logrus \
-    go-fsnotify \
-    go-dbus \
-    go-capability \
-    go-systemd \
-    btrfs-tools \
-    sqlite3 \
-    go-distribution \
-    compose-file \
-    go-connections \
-    notary \
-    grpc-go \
-    libtool-native \
-    libtool \
-    "
-
-PACKAGES =+ "${PN}-contrib"
-
-DEPENDS_append_class-target = " lvm2"
-RDEPENDS_${PN} = "util-linux iptables \
-                  ${@bb.utils.contains('DISTRO_FEATURES', 'aufs', 'aufs-util', '', d)} \
-                  ${@bb.utils.contains('DISTRO_FEATURES', 'systemd', '', 'cgroup-lite', d)} \
-                 "
-RDEPENDS_${PN} += "virtual/containerd virtual/runc"
-
-RRECOMMENDS_${PN} = "kernel-module-dm-thin-pool kernel-module-nf-nat"
-RSUGGESTS_${PN} = "lxc rt-tests"
-DOCKER_PKG="github.com/docker/docker"
-
-inherit systemd update-rc.d
-inherit go
-inherit goarch
-inherit pkgconfig
-
-do_configure[noexec] = "1"
-
-do_compile() {
-	# Set GOPATH. See 'PACKAGERS.md'. Don't rely on
-	# docker to download its dependencies but rather
-	# use dependencies packaged independently.
-	cd ${S}/src/import
-	rm -rf .gopath
-	mkdir -p .gopath/src/"$(dirname "${DOCKER_PKG}")"
-	ln -sf ../../../../components/engine/ .gopath/src/"${DOCKER_PKG}"
-
-	mkdir -p .gopath/src/github.com/docker
-	ln -sf ${WORKDIR}/libnetwork .gopath/src/github.com/docker/libnetwork
-	ln -sf ${WORKDIR}/cli .gopath/src/github.com/docker/cli
-
-	export GOPATH="${S}/src/import/.gopath:${S}/src/import/vendor:${STAGING_DIR_TARGET}/${prefix}/local/go"
-	export GOROOT="${STAGING_DIR_NATIVE}/${nonarch_libdir}/${HOST_SYS}/go"
-
-	# Pass the needed cflags/ldflags so that cgo
-	# can find the needed headers files and libraries
-	export GOARCH=${TARGET_GOARCH}
-	export CGO_ENABLED="1"
-	export CGO_CFLAGS="${CFLAGS} --sysroot=${STAGING_DIR_TARGET}"
-	export CGO_LDFLAGS="${LDFLAGS} --sysroot=${STAGING_DIR_TARGET}"
-	# in order to exclude devicemapper and btrfs - https://github.com/docker/docker/issues/14056
-	export DOCKER_BUILDTAGS='exclude_graphdriver_btrfs exclude_graphdriver_devicemapper'
-
-	export DISABLE_WARN_OUTSIDE_CONTAINER=1
-
-	cd ${S}/src/import/components/engine
-
-	# this is the unsupported built structure
-	# that doesn't rely on an existing docker
-	# to build this:
-	VERSION="${DOCKER_VERSION}" DOCKER_GITCOMMIT="${SRCREV_docker}" ./hack/make.sh dynbinary
-
-	# build the proxy
-	go build -o ${S}/src/import/docker-proxy github.com/docker/libnetwork/cmd/proxy
-
-        # build the cli
-	##go build -o ${S}/src/import/bundles/latest/dynbinary-client/docker github.com/docker/cli/cmd/docker
-	cd ${S}/src/import/.gopath/src/github.com/docker/cli
-	export CFLAGS=""
-	export LDFLAGS=""
-	export DOCKER_VERSION=${DOCKER_VERSION}
-	VERSION="${DOCKER_VERSION}" DOCKER_GITCOMMIT="${SRCREV_docker}" make dynbinary
-}
-
-SYSTEMD_PACKAGES = "${@bb.utils.contains('DISTRO_FEATURES','systemd','${PN}','',d)}"
-SYSTEMD_SERVICE_${PN} = "${@bb.utils.contains('DISTRO_FEATURES','systemd','docker.service','',d)}"
-
-SYSTEMD_AUTO_ENABLE_${PN} = "enable"
-
-INITSCRIPT_PACKAGES += "${@bb.utils.contains('DISTRO_FEATURES','sysvinit','${PN}','',d)}"
-INITSCRIPT_NAME_${PN} = "${@bb.utils.contains('DISTRO_FEATURES','sysvinit','docker.init','',d)}"
-INITSCRIPT_PARAMS_${PN} = "defaults"
-
-do_install() {
-	mkdir -p ${D}/${bindir}
-	cp ${WORKDIR}/cli/build/docker ${D}/${bindir}/docker
-	cp ${S}/src/import/components/engine/bundles/latest/dynbinary-daemon/dockerd ${D}/${bindir}/dockerd
-	cp ${S}/src/import/docker-proxy ${D}/${bindir}/docker-proxy
-
-	if ${@bb.utils.contains('DISTRO_FEATURES','systemd','true','false',d)}; then
-		install -d ${D}${systemd_unitdir}/system
-		install -m 644 ${S}/src/import/components/engine/contrib/init/systemd/docker.* ${D}/${systemd_unitdir}/system
-		# replaces one copied from above with one that uses the local registry for a mirror
-		install -m 644 ${S}/src/import/components/engine/contrib/init/systemd/docker.service ${D}/${systemd_unitdir}/system
-	else
-		install -d ${D}${sysconfdir}/init.d
-		install -m 0755 ${WORKDIR}/docker.init ${D}${sysconfdir}/init.d/docker.init
-	fi
-
-	mkdir -p ${D}${datadir}/docker/
-	cp ${WORKDIR}/hi.Dockerfile ${D}${datadir}/docker/
-	install -m 0755 ${S}/src/import/components/engine/contrib/check-config.sh ${D}${datadir}/docker/
-}
-
-inherit useradd
-USERADD_PACKAGES = "${PN}"
-GROUPADD_PARAM_${PN} = "-r docker"
-
-FILES_${PN} += "${systemd_unitdir}/system/*"
-
-FILES_${PN}-contrib += "${datadir}/docker/check-config.sh"
-RDEPENDS_${PN}-contrib += "bash"
-
-# DO NOT STRIP docker
-INHIBIT_PACKAGE_STRIP = "1"
-INSANE_SKIP_${PN} += "ldflags"
diff --git a/import-layers/meta-virtualization/recipes-containers/docker/docker_git.bb b/import-layers/meta-virtualization/recipes-containers/docker/docker_git.bb
deleted file mode 100644
index e055a4f..0000000
--- a/import-layers/meta-virtualization/recipes-containers/docker/docker_git.bb
+++ /dev/null
@@ -1,172 +0,0 @@
-HOMEPAGE = "http://www.docker.com"
-SUMMARY = "Linux container runtime"
-DESCRIPTION = "Linux container runtime \
- Docker complements kernel namespacing with a high-level API which \
- operates at the process level. It runs unix processes with strong \
- guarantees of isolation and repeatability across servers. \
- . \
- Docker is a great building block for automating distributed systems: \
- large-scale web deployments, database clusters, continuous deployment \
- systems, private PaaS, service-oriented architectures, etc. \
- . \
- This package contains the daemon and client. Using docker.io is \
- officially supported on x86_64 and arm (32-bit) hosts. \
- Other architectures are considered experimental. \
- . \
- Also, note that kernel version 3.10 or above is required for proper \
- operation of the daemon process, and that any lower versions may have \
- subtle and/or glaring issues. \
- "
-
-SRCREV_docker = "708b068d3095c6a6be939eb2da78c921d2e945e2"
-SRCREV_libnetwork = "4cb38c2987c236dce03c868d99b57b1e28a4b81c"
-SRCREV_cli = "0f1bb353423e45e02315e985bd9ddebe6da18457"
-SRC_URI = "\
-	git://github.com/moby/moby.git;nobranch=1;name=docker \
-	git://github.com/docker/libnetwork.git;branch=master;name=libnetwork;destsuffix=git/libnetwork \
-	git://github.com/docker/cli;branch=master;name=cli;destsuffix=git/cli \
-	file://docker.init \
-	file://hi.Dockerfile \
-        file://0001-libnetwork-use-GO-instead-of-go.patch \
-	"
-
-# Apache-2.0 for docker
-LICENSE = "Apache-2.0"
-LIC_FILES_CHKSUM = "file://src/import/LICENSE;md5=9740d093a080530b5c5c6573df9af45a"
-
-GO_IMPORT = "import"
-
-S = "${WORKDIR}/git"
-
-DOCKER_VERSION = "18.03.0"
-PV = "${DOCKER_VERSION}+git${SRCREV_docker}"
-
-DEPENDS = " \
-    go-cli \
-    go-pty \
-    go-context \
-    go-mux \
-    go-patricia \
-    go-logrus \
-    go-fsnotify \
-    go-dbus \
-    go-capability \
-    go-systemd \
-    btrfs-tools \
-    sqlite3 \
-    go-distribution \
-    compose-file \
-    go-connections \
-    notary \
-    grpc-go \
-    libtool \
-    "
-
-PACKAGES =+ "${PN}-contrib"
-
-DEPENDS_append_class-target = " lvm2"
-RDEPENDS_${PN} = "util-linux iptables \
-                  ${@bb.utils.contains('DISTRO_FEATURES', 'aufs', 'aufs-util', '', d)} \
-                  ${@bb.utils.contains('DISTRO_FEATURES', 'systemd', '', 'cgroup-lite', d)} \
-                 "
-RDEPENDS_${PN} += "virtual/containerd virtual/runc"
-
-RRECOMMENDS_${PN} = "kernel-module-dm-thin-pool kernel-module-nf-nat"
-RSUGGESTS_${PN} = "lxc rt-tests"
-DOCKER_PKG="github.com/docker/docker"
-
-inherit systemd update-rc.d
-inherit go
-inherit goarch
-inherit pkgconfig
-
-do_configure[noexec] = "1"
-
-do_compile() {
-	# Set GOPATH. See 'PACKAGERS.md'. Don't rely on
-	# docker to download its dependencies but rather
-	# use dependencies packaged independently.
-	cd ${S}/src/import
-	rm -rf .gopath
-	mkdir -p .gopath/src/"$(dirname "${DOCKER_PKG}")"
-	ln -sf ../../../.. .gopath/src/"${DOCKER_PKG}"
-
-	mkdir -p .gopath/src/github.com/docker
-	ln -sf ${WORKDIR}/git/libnetwork .gopath/src/github.com/docker/libnetwork
-	ln -sf ${WORKDIR}/git/cli .gopath/src/github.com/docker/cli
-
-	export GOPATH="${S}/src/import/.gopath:${S}/src/import/vendor:${STAGING_DIR_TARGET}/${prefix}/local/go"
-	export GOROOT="${STAGING_DIR_NATIVE}/${nonarch_libdir}/${HOST_SYS}/go"
-
-	# Pass the needed cflags/ldflags so that cgo
-	# can find the needed headers files and libraries
-	export GOARCH=${TARGET_GOARCH}
-	export CGO_ENABLED="1"
-	export CGO_CFLAGS="${CFLAGS} --sysroot=${STAGING_DIR_TARGET}"
-	export CGO_LDFLAGS="${LDFLAGS} --sysroot=${STAGING_DIR_TARGET}"
-	# in order to exclude devicemapper and btrfs - https://github.com/docker/docker/issues/14056
-	export DOCKER_BUILDTAGS='exclude_graphdriver_btrfs exclude_graphdriver_devicemapper'
-
-	export DISABLE_WARN_OUTSIDE_CONTAINER=1
-
-	cd ${S}/src/import/
-
-	# this is the unsupported built structure
-	# that doesn't rely on an existing docker
-	# to build this:
-	VERSION="${DOCKER_VERSION}" DOCKER_GITCOMMIT="${SRCREV_docker}" ./hack/make.sh dynbinary
-
-        # build the cli
-	cd ${S}/src/import/.gopath/src/github.com/docker/cli
-	export CFLAGS=""
-	export LDFLAGS=""
-	export DOCKER_VERSION=${DOCKER_VERSION}
-	VERSION="${DOCKER_VERSION}" DOCKER_GITCOMMIT="${SRCREV_docker}" make dynbinary
-
-	# build the proxy
-	cd ${S}/src/import/.gopath/src/github.com/docker/libnetwork
-	oe_runmake cross-local
-}
-
-SYSTEMD_PACKAGES = "${@bb.utils.contains('DISTRO_FEATURES','systemd','${PN}','',d)}"
-SYSTEMD_SERVICE_${PN} = "${@bb.utils.contains('DISTRO_FEATURES','systemd','docker.service','',d)}"
-
-SYSTEMD_AUTO_ENABLE_${PN} = "enable"
-
-INITSCRIPT_PACKAGES += "${@bb.utils.contains('DISTRO_FEATURES','sysvinit','${PN}','',d)}"
-INITSCRIPT_NAME_${PN} = "${@bb.utils.contains('DISTRO_FEATURES','sysvinit','docker.init','',d)}"
-INITSCRIPT_PARAMS_${PN} = "defaults"
-
-do_install() {
-	mkdir -p ${D}/${bindir}
-	cp ${WORKDIR}/git/cli/build/docker ${D}/${bindir}/docker
-	cp ${S}/src/import/bundles/latest/dynbinary-daemon/dockerd ${D}/${bindir}/dockerd
-	cp ${WORKDIR}/git/libnetwork/bin/docker-proxy* ${D}/${bindir}/docker-proxy
-
-	if ${@bb.utils.contains('DISTRO_FEATURES','systemd','true','false',d)}; then
-		install -d ${D}${systemd_unitdir}/system
-		install -m 644 ${S}/src/import/contrib/init/systemd/docker.* ${D}/${systemd_unitdir}/system
-		# replaces one copied from above with one that uses the local registry for a mirror
-		install -m 644 ${S}/src/import/contrib/init/systemd/docker.service ${D}/${systemd_unitdir}/system
-	else
-		install -d ${D}${sysconfdir}/init.d
-		install -m 0755 ${WORKDIR}/docker.init ${D}${sysconfdir}/init.d/docker.init
-	fi
-
-	mkdir -p ${D}${datadir}/docker/
-	cp ${WORKDIR}/hi.Dockerfile ${D}${datadir}/docker/
-	install -m 0755 ${S}/src/import/contrib/check-config.sh ${D}${datadir}/docker/
-}
-
-inherit useradd
-USERADD_PACKAGES = "${PN}"
-GROUPADD_PARAM_${PN} = "-r docker"
-
-FILES_${PN} += "${systemd_unitdir}/system/*"
-
-FILES_${PN}-contrib += "${datadir}/docker/check-config.sh"
-RDEPENDS_${PN}-contrib += "bash"
-
-# DO NOT STRIP docker
-INHIBIT_PACKAGE_STRIP = "1"
-INSANE_SKIP_${PN} += "ldflags"
diff --git a/import-layers/meta-virtualization/recipes-containers/docker/files/0001-libnetwork-use-GO-instead-of-go.patch b/import-layers/meta-virtualization/recipes-containers/docker/files/0001-libnetwork-use-GO-instead-of-go.patch
deleted file mode 100644
index 61ddd26..0000000
--- a/import-layers/meta-virtualization/recipes-containers/docker/files/0001-libnetwork-use-GO-instead-of-go.patch
+++ /dev/null
@@ -1,62 +0,0 @@
-From 04c07804930faad708218a3134c81de06a9c742a Mon Sep 17 00:00:00 2001
-From: Bruce Ashfield <bruce.ashfield@windriver.com>
-Date: Fri, 6 Apr 2018 23:58:22 -0400
-Subject: [PATCH] libnetwork: use $(GO) instead of go
-
-Ensure that the libnetwork makefile uses the go cross flags and
-utilities.
-
-Signed-off-by: Bruce Ashfield <bruce.ashfield@windriver.com>
----
- Makefile | 14 +++++++-------
- 1 file changed, 7 insertions(+), 7 deletions(-)
-
-diff --git a/libnetwork/Makefile b/libnetwork/Makefile
-index 17060bc212c7..90cc7a72ef45 100644
---- a/libnetwork/Makefile
-+++ b/libnetwork/Makefile
-@@ -26,9 +26,9 @@ build: ${build_image}.created
- build-local:
- 	@echo "🐳 $@"
- 	@mkdir -p "bin"
--	go build -tags experimental -o "bin/dnet" ./cmd/dnet
--	go build -o "bin/docker-proxy" ./cmd/proxy
--	GOOS=linux go build -o "./cmd/diagnostic/diagnosticClient" ./cmd/diagnostic
-+	$(GO) build -tags experimental -o "bin/dnet" ./cmd/dnet
-+	$(GO) build -o "bin/proxy" ./cmd/proxy
-+	GOOS=linux $(GO) build -o "./cmd/diagnostic/diagnosticClient" ./cmd/diagnostic
- 
- clean:
- 	@echo "🐳 $@"
-@@ -51,8 +51,8 @@ cross: ${build_image}.created
- 
- cross-local:
- 	@echo "🐳 $@"
--	go build -o "bin/dnet-$$GOOS-$$GOARCH" ./cmd/dnet
--	go build -o "bin/docker-proxy-$$GOOS-$$GOARCH" ./cmd/proxy
-+	@$(GO) build -linkshared $(GOBUILDFLAGS) -o "bin/docker-proxy-$$GOOS-$$GOARCH" ./cmd/proxy
-+	@$(GO) build -linkshared $(GOBUILDFLAGS) -o "bin/dnet-$$GOOS-$$GOARCH" ./cmd/dnet
- 
- check: ${build_image}.created
- 	@${docker} ./wrapmake.sh check-local
-@@ -68,7 +68,7 @@ run-tests:
- 	if ls $$dir/*.go &> /dev/null; then \
- 		pushd . &> /dev/null ; \
- 		cd $$dir ; \
--		go test ${INSIDECONTAINER} -test.parallel 5 -test.v -covermode=count -coverprofile=./profile.tmp ; \
-+		$(GO) test ${INSIDECONTAINER} -test.parallel 5 -test.v -covermode=count -coverprofile=./profile.tmp ; \
- 		ret=$$? ;\
- 		if [ $$ret -ne 0 ]; then exit $$ret; fi ;\
- 		popd &> /dev/null; \
-@@ -94,7 +94,7 @@ coveralls:
- # Depends on binaries because vet will silently fail if it can not load compiled imports
- vet: ## run go vet
- 	@echo "🐳 $@"
--	@test -z "$$(go vet ${PACKAGES} 2>&1 | grep -v 'constant [0-9]* not a string in call to Errorf' | egrep -v '(timestamp_test.go|duration_test.go|exit status 1)' | tee /dev/stderr)"
-+	@test -z "$$($(GO) vet ${PACKAGES} 2>&1 | grep -v 'constant [0-9]* not a string in call to Errorf' | egrep -v '(timestamp_test.go|duration_test.go|exit status 1)' | tee /dev/stderr)"
- 
- misspell:
- 	@echo "🐳 $@"
--- 
-2.4.0.53.g8440f74
-
diff --git a/import-layers/meta-virtualization/recipes-containers/docker/files/docker-registry.service b/import-layers/meta-virtualization/recipes-containers/docker/files/docker-registry.service
deleted file mode 100644
index 7b4bc46..0000000
--- a/import-layers/meta-virtualization/recipes-containers/docker/files/docker-registry.service
+++ /dev/null
@@ -1,19 +0,0 @@
-[Unit]
-Description=docker private registry service
-After=docker.service
-
-[Service]
-ExecStartPre=-/usr/bin/docker kill registry
-ExecStartPre=-/usr/bin/docker rm registry
-ExecStart=/usr/bin/docker run --name registry -v /mirror/registry:/tmp/ -p 5000:5000 \
-                          -e "STANDALONE=true" \
-                          -e "MIRROR_SOURCE=https://registry-1.docker.io" \
-                          -e "MIRROR_SOURCE_INDEX=https://index.docker.io" \
-                          -e "SETTINGS_FLAVOR=local" \
-                          registry
-ExecStop=-/usr/bin/docker stop registry
-Restart=always
-RestartSec=10s
-
-[Install]
-WantedBy=multi-user.target
diff --git a/import-layers/meta-virtualization/recipes-containers/docker/files/docker.init b/import-layers/meta-virtualization/recipes-containers/docker/files/docker.init
deleted file mode 100644
index 2e8eb9e..0000000
--- a/import-layers/meta-virtualization/recipes-containers/docker/files/docker.init
+++ /dev/null
@@ -1,127 +0,0 @@
-#!/bin/sh
-#
-#       /etc/rc.d/init.d/docker
-#
-#       Daemon for docker.com
-#
-# chkconfig:   2345 95 95
-# description: Daemon for docker.com
-
-### BEGIN INIT INFO
-# Provides:       docker
-# Required-Start: $network cgconfig
-# Required-Stop:
-# Should-Start:
-# Should-Stop:
-# Default-Start: 2 3 4 5
-# Default-Stop:  0 1 6
-# Short-Description: start and stop docker
-# Description: Daemon for docker.com
-### END INIT INFO
-
-# Source function library.
-. /etc/init.d/functions
-
-prog="docker"
-unshare=/usr/bin/unshare
-exec="/usr/bin/$prog"
-pidfile="/var/run/$prog.pid"
-lockfile="/var/lock/subsys/$prog"
-logfile="/var/log/$prog"
-other_args="--registry-mirror=http://localhost:5000 --insecure-registry=http://localhost:5000 --raw-logs"
-
-[ -e /etc/sysconfig/$prog ] && . /etc/sysconfig/$prog
-
-start() {
-    [ -x $exec ] || exit 5
-
-    check_for_cleanup
-
-    if ! [ -f $pidfile ]; then
-        printf "Starting $prog:\t"
-        echo -e "\n$(date)\n" >> $logfile
-        "$unshare" -m -- $exec daemon $other_args &>> $logfile &
-        pid=$!
-        touch $lockfile
-        # wait up to 10 seconds for the pidfile to exist.  see
-        # https://github.com/docker/docker/issues/5359
-        tries=0
-        while [ ! -f $pidfile -a $tries -lt 10 ]; do
-            sleep 1
-            tries=$((tries + 1))
-        done
-        success
-        echo
-    else
-        failure
-        echo
-        printf "$pidfile still exists...\n"
-        exit 7
-    fi
-}
-
-stop() {
-    echo -n $"Stopping $prog: "
-    killproc $prog
-    retval=$?
-    echo
-    [ $retval -eq 0 ] && rm -f $lockfile
-    return $retval
-}
-
-restart() {
-    stop
-    start
-}
-
-reload() {
-    restart
-}
-
-force_reload() {
-    restart
-}
-
-rh_status() {
-    status -p $pidfile $prog
-}
-
-rh_status_q() {
-    rh_status >/dev/null 2>&1
-}
-
-
-check_for_cleanup() {
-    if [ -f ${pidfile} ]; then
-        /bin/ps -fp $(cat ${pidfile}) > /dev/null || rm ${pidfile}
-    fi
-}
-
-case "$1" in
-    start)
-        $1
-        ;;
-    stop)
-        $1
-        ;;
-    restart)
-        $1
-        ;;
-    reload)
-        $1
-        ;;
-    force-reload)
-        force_reload
-        ;;
-    status)
-        status
-        ;;
-    condrestart|try-restart)
-        restart
-        ;;
-    *)
-        echo $"Usage: $0 {start|stop|status|restart|condrestart|try-restart|reload|force-reload}"
-        exit 2
-esac
-
-exit $?
diff --git a/import-layers/meta-virtualization/recipes-containers/docker/files/docker.service b/import-layers/meta-virtualization/recipes-containers/docker/files/docker.service
deleted file mode 100644
index eaa3319..0000000
--- a/import-layers/meta-virtualization/recipes-containers/docker/files/docker.service
+++ /dev/null
@@ -1,15 +0,0 @@
-[Unit]
-Description=Docker Application Container Engine
-Documentation=http://docs.docker.com
-After=network.target docker.socket
-Requires=docker.socket
-
-[Service]
-ExecStart=/usr/bin/docker daemon -H fd:// --registry-mirror=http://localhost:5000 --insecure-registry=http://localhost:5000 --raw-logs
-MountFlags=slave
-LimitNOFILE=1048576
-LimitNPROC=1048576
-LimitCORE=infinity
-
-[Install]
-WantedBy=multi-user.target
diff --git a/import-layers/meta-virtualization/recipes-containers/docker/files/hi.Dockerfile b/import-layers/meta-virtualization/recipes-containers/docker/files/hi.Dockerfile
deleted file mode 100644
index 9af6805..0000000
--- a/import-layers/meta-virtualization/recipes-containers/docker/files/hi.Dockerfile
+++ /dev/null
@@ -1,7 +0,0 @@
-FROM debian
-
-MAINTAINER amy.fong@windriver.com
-
-RUN apt-get update && apt-get install figlet
-
-ENTRYPOINT [ "/usr/bin/figlet", "hi" ]
diff --git a/import-layers/meta-virtualization/recipes-containers/go-digest/go-digest_git.bb b/import-layers/meta-virtualization/recipes-containers/go-digest/go-digest_git.bb
deleted file mode 100644
index a2f8cd6..0000000
--- a/import-layers/meta-virtualization/recipes-containers/go-digest/go-digest_git.bb
+++ /dev/null
@@ -1,41 +0,0 @@
-DESCRIPTION = "Common digest package used across the container ecosystem."
-HOMEPAGE = "https://github.com/opencontainers/go-digest.git"
-SECTION = "devel/go"
-LICENSE = "Apache-2.0"
-LIC_FILES_CHKSUM = "file://src/${PKG_NAME}/LICENSE.code;md5=9cd86830b557232ce55e2a6b47387471"
-
-SRCNAME = "go-digest"
-
-PKG_NAME = "github.com/opencontainers/${SRCNAME}"
-SRC_URI = "git://${PKG_NAME}.git;destsuffix=git/src/${PKG_NAME}"
-
-SRCREV = "b6234c321f263c503268e3b205f3d9755f9d14ed"
-PV = "v1.0.0-rc0+git${SRCPV}"
-
-S = "${WORKDIR}/git"
-
-# NO-OP the do compile rule because this recipe is source only.
-do_compile() {
-}
-
-do_install() {
-	install -d ${D}${prefix}/local/go/src/${PKG_NAME}
-	for j in $(cd ${S} && find src/${PKG_NAME} -name "*.go"); do
-	    if [ ! -d ${D}${prefix}/local/go/$(dirname $j) ]; then
-	        mkdir -p ${D}${prefix}/local/go/$(dirname $j)
-	    fi
-	    cp $j ${D}${prefix}/local/go/$j
-	done
-	cp -r ${S}/src/${PKG_NAME}/LICENSE.code ${D}${prefix}/local/go/src/${PKG_NAME}/
-}
-
-SYSROOT_PREPROCESS_FUNCS += "go_digest_file_sysroot_preprocess"
-
-go_digest_file_sysroot_preprocess () {
-    install -d ${SYSROOT_DESTDIR}${prefix}/local/go/src/${PKG_NAME}
-    cp -r ${D}${prefix}/local/go/src/${PKG_NAME} ${SYSROOT_DESTDIR}${prefix}/local/go/src/$(dirname ${PKG_NAME})
-}
-
-FILES_${PN} += "${prefix}/local/go/src/${PKG_NAME}/*"
-
-CLEANBROKEN = "1"
\ No newline at end of file
diff --git a/import-layers/meta-virtualization/recipes-containers/go-errors/go-errors_git.bb b/import-layers/meta-virtualization/recipes-containers/go-errors/go-errors_git.bb
deleted file mode 100644
index 3bb74a7..0000000
--- a/import-layers/meta-virtualization/recipes-containers/go-errors/go-errors_git.bb
+++ /dev/null
@@ -1,41 +0,0 @@
-DESCRIPTION = "Simple error handling primitives"
-HOMEPAGE = "https://github.com/pkg/errors"
-SECTION = "devel/go"
-LICENSE = "BSD"
-LIC_FILES_CHKSUM = "file://src/${PKG_NAME}/LICENSE;md5=6fe682a02df52c6653f33bd0f7126b5a"
-
-SRCNAME = "errors"
-
-PKG_NAME = "github.com/pkg/${SRCNAME}"
-SRC_URI = "git://${PKG_NAME}.git;destsuffix=git/src/${PKG_NAME}"
-
-SRCREV = "248dadf4e9068a0b3e79f02ed0a610d935de5302"
-PV = "v0.8.0+git${SRCPV}"
-
-S = "${WORKDIR}/git"
-
-# NO-OP the do compile rule because this recipe is source only.
-do_compile() {
-}
-
-do_install() {
-	install -d ${D}${prefix}/local/go/src/${PKG_NAME}
-	for j in $(cd ${S} && find src/${PKG_NAME} -name "*.go" -not -path "*/.tool/*"); do
-	    if [ ! -d ${D}${prefix}/local/go/$(dirname $j) ]; then
-	        mkdir -p ${D}${prefix}/local/go/$(dirname $j)
-	    fi
-	    cp $j ${D}${prefix}/local/go/$j
-	done
-	cp -r ${S}/src/${PKG_NAME}/LICENSE ${D}${prefix}/local/go/src/${PKG_NAME}/
-}
-
-SYSROOT_PREPROCESS_FUNCS += "go_errors_file_sysroot_preprocess"
-
-go_errors_file_sysroot_preprocess () {
-    install -d ${SYSROOT_DESTDIR}${prefix}/local/go/src/${PKG_NAME}
-    cp -r ${D}${prefix}/local/go/src/${PKG_NAME} ${SYSROOT_DESTDIR}${prefix}/local/go/src/$(dirname ${PKG_NAME})
-}
-
-FILES_${PN} += "${prefix}/local/go/src/${PKG_NAME}/*"
-
-CLEANBROKEN = "1"
\ No newline at end of file
diff --git a/import-layers/meta-virtualization/recipes-containers/go-spf13-cobra/spf13-cobra_git.bb b/import-layers/meta-virtualization/recipes-containers/go-spf13-cobra/spf13-cobra_git.bb
deleted file mode 100644
index e942e4e..0000000
--- a/import-layers/meta-virtualization/recipes-containers/go-spf13-cobra/spf13-cobra_git.bb
+++ /dev/null
@@ -1,41 +0,0 @@
-DESCRIPTION = "A Commander for modern Go CLI interactions"
-HOMEPAGE = "https://github.com/spf13/cobra"
-SECTION = "devel/go"
-LICENSE = "Apache-2.0"
-LIC_FILES_CHKSUM = "file://src/${PKG_NAME}/LICENSE.txt;md5=920d76114a32b0fb75b3f2718c5a91be"
-
-SRCNAME = "cobra"
-
-PKG_NAME = "github.com/spf13/${SRCNAME}"
-SRC_URI = "git://${PKG_NAME}.git;destsuffix=git/src/${PKG_NAME}"
-
-SRCREV = "b5d8e8f46a2f829f755b6e33b454e25c61c935e1"
-PV = "v0.0.1+git${SRCPV}"
-
-S = "${WORKDIR}/git"
-
-# NO-OP the do compile rule because this recipe is source only.
-do_compile() {
-}
-
-do_install() {
-	install -d ${D}${prefix}/local/go/src/${PKG_NAME}
-	for j in $(cd ${S} && find src/${PKG_NAME} -name "*.go" -not -path "*/.tool/*"); do
-	    if [ ! -d ${D}${prefix}/local/go/$(dirname $j) ]; then
-	        mkdir -p ${D}${prefix}/local/go/$(dirname $j)
-	    fi
-	    cp $j ${D}${prefix}/local/go/$j
-	done
-	cp -r ${S}/src/${PKG_NAME}/LICENSE.txt ${D}${prefix}/local/go/src/${PKG_NAME}/
-}
-
-SYSROOT_PREPROCESS_FUNCS += "cobra_file_sysroot_preprocess"
-
-cobra_file_sysroot_preprocess () {
-    install -d ${SYSROOT_DESTDIR}${prefix}/local/go/src/${PKG_NAME}
-    cp -r ${D}${prefix}/local/go/src/${PKG_NAME} ${SYSROOT_DESTDIR}${prefix}/local/go/src/$(dirname ${PKG_NAME})
-}
-
-FILES_${PN} += "${prefix}/local/go/src/${PKG_NAME}/*"
-
-CLEANBROKEN = "1"
\ No newline at end of file
diff --git a/import-layers/meta-virtualization/recipes-containers/go-spf13-pflag/spf13-pflag_git.bb b/import-layers/meta-virtualization/recipes-containers/go-spf13-pflag/spf13-pflag_git.bb
deleted file mode 100644
index 2fbcb43..0000000
--- a/import-layers/meta-virtualization/recipes-containers/go-spf13-pflag/spf13-pflag_git.bb
+++ /dev/null
@@ -1,41 +0,0 @@
-DESCRIPTION = "Drop-in replacement for Go's flag package, implementing POSIX/GNU-style --flags."
-HOMEPAGE = "https://github.com/spf13/pflag"
-SECTION = "devel/go"
-LICENSE = "BSD"
-LIC_FILES_CHKSUM = "file://src/${PKG_NAME}/LICENSE;md5=1e8b7dc8b906737639131047a590f21d"
-
-SRCNAME = "pflag"
-
-PKG_NAME = "github.com/spf13/${SRCNAME}"
-SRC_URI = "git://${PKG_NAME}.git;destsuffix=git/src/${PKG_NAME}"
-
-SRCREV = "9ff6c6923cfffbcd502984b8e0c80539a94968b7"
-PV = "v1.0.0-rc4+git${SRCPV}"
-
-S = "${WORKDIR}/git"
-
-# NO-OP the do compile rule because this recipe is source only.
-do_compile() {
-}
-
-do_install() {
-	install -d ${D}${prefix}/local/go/src/${PKG_NAME}
-	for j in $(cd ${S} && find src/${PKG_NAME} -name "*.go" -not -path "*/.tool/*"); do
-	    if [ ! -d ${D}${prefix}/local/go/$(dirname $j) ]; then
-	        mkdir -p ${D}${prefix}/local/go/$(dirname $j)
-	    fi
-	    cp $j ${D}${prefix}/local/go/$j
-	done
-	cp -r ${S}/src/${PKG_NAME}/LICENSE ${D}${prefix}/local/go/src/${PKG_NAME}/
-}
-
-SYSROOT_PREPROCESS_FUNCS += "pflag_file_sysroot_preprocess"
-
-pflag_file_sysroot_preprocess () {
-    install -d ${SYSROOT_DESTDIR}${prefix}/local/go/src/${PKG_NAME}
-    cp -r ${D}${prefix}/local/go/src/${PKG_NAME} ${SYSROOT_DESTDIR}${prefix}/local/go/src/$(dirname ${PKG_NAME})
-}
-
-FILES_${PN} += "${prefix}/local/go/src/${PKG_NAME}/*"
-
-CLEANBROKEN = "1"
\ No newline at end of file
diff --git a/import-layers/meta-virtualization/recipes-containers/kubernetes/kubernetes_git.bb b/import-layers/meta-virtualization/recipes-containers/kubernetes/kubernetes_git.bb
deleted file mode 100644
index 1677ff4..0000000
--- a/import-layers/meta-virtualization/recipes-containers/kubernetes/kubernetes_git.bb
+++ /dev/null
@@ -1,100 +0,0 @@
-HOMEPAGE = "git://github.com/kubernetes/kubernetes"
-SUMMARY = "Production-Grade Container Scheduling and Management"
-DESCRIPTION = "Kubernetes is an open source system for managing containerized \
-applications across multiple hosts, providing basic mechanisms for deployment, \
-maintenance, and scaling of applications. \
-"
-
-SRCREV_kubernetes = "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
-SRC_URI = "git://github.com/kubernetes/kubernetes.git;nobranch=1;name=kubernetes \
-          "
-
-DEPENDS += "rsync-native \
-            coreutils-native \
-           "
-
-PACKAGES =+ "kubeadm"
-PACKAGES =+ "kubectl"
-PACKAGES =+ "kubelet"
-PACKAGES =+ "kube-proxy"
-
-ALLOW_EMPTY_${PN} = "1"
-
-# Note: we are explicitly *not* adding docker to the rdepends, since we allow
-#       backends like cri-o to be used.
-RDEPENDS_${PN} += "kubeadm \
-                   kubectl \
-                   kubelet \
-                   cni"
-
-RDEPENDS_kubeadm = "kubelet kubectl"
-RDEPENDS_kubelet = "iptables socat util-linux ethtool iproute2 ebtables iproute2-tc"
-
-LICENSE = "Apache-2.0"
-LIC_FILES_CHKSUM = "file://src/import/LICENSE;md5=3b83ef96387f14655fc854ddc3c6bd57"
-
-GO_IMPORT = "import"
-
-PV = "1.10.0+git${SRCREV_kubernetes}"
-
-inherit systemd
-inherit go
-inherit goarch
-
-do_compile() {
-	export GOARCH="${TARGET_GOARCH}"
-	export GOROOT="${STAGING_LIBDIR_NATIVE}/${TARGET_SYS}/go"
-	export GOPATH="${S}/src/import:${S}/src/import/vendor"
-
-	# Pass the needed cflags/ldflags so that cgo
-	# can find the needed headers files and libraries
-	export CGO_ENABLED="1"
-	export CFLAGS=""
-	export LDFLAGS=""
-	export CGO_CFLAGS="${BUILDSDK_CFLAGS} --sysroot=${STAGING_DIR_TARGET}"
-	export CGO_LDFLAGS="${BUILDSDK_LDFLAGS} --sysroot=${STAGING_DIR_TARGET}"
-
-	# link fixups for compilation
-	rm -f ${S}/src/import/vendor/src
-	ln -sf ./ ${S}/src/import/vendor/src
-
-	export GOPATH="${S}/src/import/.gopath:${S}/src/import/vendor:${STAGING_DIR_TARGET}/${prefix}/local/go"
-	export GOROOT="${STAGING_DIR_NATIVE}/${nonarch_libdir}/${HOST_SYS}/go"
-
-	# Pass the needed cflags/ldflags so that cgo
-	# can find the needed headers files and libraries
-	export CGO_ENABLED="1"
-	export CGO_CFLAGS="${CFLAGS} --sysroot=${STAGING_DIR_TARGET}"
-	export CGO_LDFLAGS="${LDFLAGS} --sysroot=${STAGING_DIR_TARGET}"
-
-	cd ${S}/src/import
-	# to limit what is built, use 'WHAT', i.e. make WHAT=cmd/kubelet
-	make all
-}
-
-do_install() {
-    install -d ${D}${bindir}
-    install -d ${D}${systemd_unitdir}/system/
-    install -d ${D}${systemd_unitdir}/system/kubelet.service.d/
-
-    install -d ${D}${sysconfdir}/kubernetes/manifests/
-
-    install -m 755 -D ${S}/src/import/_output/bin/kube* ${D}/${bindir}
-
-    install -m 0644 ${S}/src/import/build/debs/kubelet.service  ${D}${systemd_unitdir}/system/
-    install -m 0644 ${S}/src/import/build/debs/10-kubeadm.conf  ${D}${systemd_unitdir}/system/kubelet.service.d/
-}
-
-SYSTEMD_PACKAGES = "${@bb.utils.contains('DISTRO_FEATURES','systemd','kubelet','',d)}"
-SYSTEMD_SERVICE_kubelet = "${@bb.utils.contains('DISTRO_FEATURES','systemd','kubelet.service','',d)}"
-SYSTEMD_AUTO_ENABLE_kubelet = "enable"
-
-FILES_kubeadm = "${bindir}/kubeadm ${systemd_unitdir}/system/kubelet.service.d/*"
-FILES_kubectl = "${bindir}/kubectl"
-FILES_kube-proxy = "${bindir}/kube-proxy"
-FILES_kubelet = "${bindir}/kubelet ${systemd_unitdir}/system/kubelet.service ${sysconfdir}/kubernetes/manifests/"
-
-INHIBIT_PACKAGE_STRIP = "1"
-INSANE_SKIP_${PN} += "ldflags already-stripped"
-
-deltask compile_ptest_base
diff --git a/import-layers/meta-virtualization/recipes-containers/lxc/files/automake-ensure-VPATH-builds-correctly.patch b/import-layers/meta-virtualization/recipes-containers/lxc/files/automake-ensure-VPATH-builds-correctly.patch
deleted file mode 100644
index 61c0e29..0000000
--- a/import-layers/meta-virtualization/recipes-containers/lxc/files/automake-ensure-VPATH-builds-correctly.patch
+++ /dev/null
@@ -1,26 +0,0 @@
-From fe23085d9a40d6d78387d9ce8ddb65785fe8d6e5 Mon Sep 17 00:00:00 2001
-From: Bogdan Purcareata <bogdan.purcareata@freescale.com>
-Date: Thu, 2 Oct 2014 18:31:50 -0400
-Subject: [PATCH] automake: ensure VPATH builds correctly
-
-Signed-off-by: Bogdan Purcareata <bogdan.purcareata@freescale.com>
----
- src/tests/Makefile.am |    2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/src/tests/Makefile.am b/src/tests/Makefile.am
-index d74c10d..6225f78 100644
---- a/src/tests/Makefile.am
-+++ b/src/tests/Makefile.am
-@@ -66,7 +66,7 @@ buildtest-TESTS: $(TESTS)
- install-ptest:
- 	install -d $(TEST_DIR)
- 	install -D ../lxc/.libs/liblxc.so $(TEST_DIR)/../lxc/liblxc.so
--	install -D ../../config/test-driver $(TEST_DIR)/../../config/test-driver
-+	install -D $(top_srcdir)/config/test-driver $(TEST_DIR)/../../config/test-driver
- 	cp Makefile $(TEST_DIR)
- 	@(for file in $(TESTS); do install $$file $(TEST_DIR);  done;)
- 	sed -i 's|^Makefile:|_Makefile:|' $(TEST_DIR)/Makefile
--- 
-1.7.10.4
-
diff --git a/import-layers/meta-virtualization/recipes-containers/lxc/files/cgroups-work-around-issue-in-gcc-7.patch b/import-layers/meta-virtualization/recipes-containers/lxc/files/cgroups-work-around-issue-in-gcc-7.patch
deleted file mode 100644
index 90740fb..0000000
--- a/import-layers/meta-virtualization/recipes-containers/lxc/files/cgroups-work-around-issue-in-gcc-7.patch
+++ /dev/null
@@ -1,34 +0,0 @@
-From 58a2d817a82100d287c60c63315d81445cdba3f9 Mon Sep 17 00:00:00 2001
-From: Mark Asselstine <mark.asselstine@windriver.com>
-Date: Thu, 15 Jun 2017 15:12:08 -0400
-Subject: [PATCH] cgroups: work around issue in gcc 7
-
-This works around
-https://bugzilla.yoctoproject.org/show_bug.cgi?id=11672
-https://gcc.gnu.org/bugzilla/show_bug.cgi?id=78969
-
-By removing a single cgroup entry. For the majority of usecases this
-loss of a single entry should not be an issue and once gcc 7 is fixed
-we can revert this.
-
-Signed-off-by: Mark Asselstine <mark.asselstine@windriver.com>
----
- src/lxc/cgroups/cgfsng.c | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/src/lxc/cgroups/cgfsng.c b/src/lxc/cgroups/cgfsng.c
-index ebd548b..c520abd 100644
---- a/src/lxc/cgroups/cgfsng.c
-+++ b/src/lxc/cgroups/cgfsng.c
-@@ -1373,7 +1373,7 @@ static inline bool cgfsng_create(void *hdata)
- 	offset = cgname + len - 5;
- 
- again:
--	if (idx == 1000) {
-+	if (idx == 999) {
- 		ERROR("Too many conflicting cgroup names");
- 		goto out_free;
- 	}
--- 
-2.7.4
-
diff --git a/import-layers/meta-virtualization/recipes-containers/lxc/files/dnsmasq.conf b/import-layers/meta-virtualization/recipes-containers/lxc/files/dnsmasq.conf
deleted file mode 100644
index 124f7eb..0000000
--- a/import-layers/meta-virtualization/recipes-containers/lxc/files/dnsmasq.conf
+++ /dev/null
@@ -1,2 +0,0 @@
-bind-interfaces
-except-interface=lxcbr0
diff --git a/import-layers/meta-virtualization/recipes-containers/lxc/files/logs-optionally-use-base-filenames-to-report-src-fil.patch b/import-layers/meta-virtualization/recipes-containers/lxc/files/logs-optionally-use-base-filenames-to-report-src-fil.patch
deleted file mode 100644
index 583b6f1..0000000
--- a/import-layers/meta-virtualization/recipes-containers/lxc/files/logs-optionally-use-base-filenames-to-report-src-fil.patch
+++ /dev/null
@@ -1,70 +0,0 @@
-From 4729d0f4c4d1dacd150ddfd7061dda875eb94e34 Mon Sep 17 00:00:00 2001
-Message-Id: <4729d0f4c4d1dacd150ddfd7061dda875eb94e34.1443216870.git.Jim.Somerville@windriver.com>
-From: Jim Somerville <Jim.Somerville@windriver.com>
-Date: Fri, 25 Sep 2015 15:08:17 -0400
-Subject: [PATCH 1/1] logs: optionally use base filenames to report src files
-
-Problem:  Logs are nice in that they report the source file,
-routine, and line number where an issue occurs.  But the
-file is printed as the absolute filename.  Users do not
-need to see a long spew of path directory names where the package
-was built.  It just confuses things.
-
-Solution:  Optionally chop off all leading directories so that just
-the source filename ie. basename is printed.  This is done by
-setting a #ifdef LXC_LOG_USE_BASENAME check in the code.  That
-define is done via the optional --enable-log-src-basename provided
-at configure time.
-
-Using __BASE_FILE__ instead of __FILE__ did not work.  It
-refers to the file name as presented to the compile
-machinery, and that may still be the absolute pathname to
-the file.
-
-Signed-off-by: Jim Somerville <Jim.Somerville@windriver.com>
----
- configure.ac  | 9 +++++++++
- src/lxc/log.h | 5 +++++
- 2 files changed, 14 insertions(+)
-
-diff --git a/configure.ac b/configure.ac
-index deba90b..c1ed67b 100644
---- a/configure.ac
-+++ b/configure.ac
-@@ -357,6 +357,15 @@ AM_COND_IF([ENABLE_PYTHON],
- 	PKG_CHECK_MODULES([PYTHONDEV], [python3 >= 3.2],[],[AC_MSG_ERROR([You must install python3-dev])])
- 	AC_DEFINE_UNQUOTED([ENABLE_PYTHON], 1, [Python3 is available])])
- 
-+# Enable basenames in the logs for source files
-+AC_ARG_ENABLE([log-src-basename],
-+	[AC_HELP_STRING([--enable-log-src-basename], [Use the shorter source file basename in the logs [default=no]])],
-+	[], [enable_log_src_basename=no])
-+
-+if test "x$enable_log_src_basename" = "xyes"; then
-+	AC_DEFINE([LXC_LOG_USE_BASENAME], 1, [Enabling shorter src filenames in the logs])
-+fi
-+
- # Enable dumping stack traces
- AC_ARG_ENABLE([mutex-debugging],
- 	[AC_HELP_STRING([--enable-mutex-debugging], [Makes mutexes to report error and provide stack trace [default=no]])],
-diff --git a/src/lxc/log.h b/src/lxc/log.h
-index 76bd4df..4365977 100644
---- a/src/lxc/log.h
-+++ b/src/lxc/log.h
-@@ -74,8 +74,13 @@ struct lxc_log_locinfo {
- 	int		line;
- };
- 
-+#ifdef LXC_LOG_USE_BASENAME
-+#define LXC_LOG_LOCINFO_INIT						\
-+	{ .file = (strrchr(__FILE__, '/') ? strrchr(__FILE__, '/') + 1 : __FILE__), .func = __func__, .line = __LINE__	}
-+#else
- #define LXC_LOG_LOCINFO_INIT						\
- 	{ .file = __FILE__, .func = __func__, .line = __LINE__	}
-+#endif
- 
- /* brief logging event object */
- struct lxc_log_event {
--- 
-1.8.3.2
-
diff --git a/import-layers/meta-virtualization/recipes-containers/lxc/files/lxc-1.0.0-disable-udhcp-from-busybox-template.patch b/import-layers/meta-virtualization/recipes-containers/lxc/files/lxc-1.0.0-disable-udhcp-from-busybox-template.patch
deleted file mode 100644
index 723be27..0000000
--- a/import-layers/meta-virtualization/recipes-containers/lxc/files/lxc-1.0.0-disable-udhcp-from-busybox-template.patch
+++ /dev/null
@@ -1,24 +0,0 @@
-From d7e07e7acb1cbad33806f49143a2a30b4468c369 Mon Sep 17 00:00:00 2001
-From: Bogdan Purcareata <bogdan.purcareata@freescale.com>
-Date: Mon, 8 Apr 2013 18:30:19 +0300
-Subject: [PATCH] lxc-0.9.0-disable-udhcp-from-busybox-template
-
----
- templates/lxc-busybox.in | 1 -
- 1 file changed, 1 deletion(-)
-
-diff --git a/templates/lxc-busybox.in b/templates/lxc-busybox.in
-index cb425ec..bb8c951 100644
---- a/templates/lxc-busybox.in
-+++ b/templates/lxc-busybox.in
-@@ -84,7 +84,6 @@ EOF
- #!/bin/sh
- /bin/syslogd
- /bin/mount -a
--/bin/udhcpc
- EOF
- 
-     # executable
--- 
-1.7.11.7
-
diff --git a/import-layers/meta-virtualization/recipes-containers/lxc/files/lxc-doc-upgrade-to-use-docbook-3.1-DTD.patch b/import-layers/meta-virtualization/recipes-containers/lxc/files/lxc-doc-upgrade-to-use-docbook-3.1-DTD.patch
deleted file mode 100644
index 5f9d771..0000000
--- a/import-layers/meta-virtualization/recipes-containers/lxc/files/lxc-doc-upgrade-to-use-docbook-3.1-DTD.patch
+++ /dev/null
@@ -1,32 +0,0 @@
-From 4cf207ffd64c6f815e62ecbbf25b5a378e707182 Mon Sep 17 00:00:00 2001
-Message-Id: <4cf207ffd64c6f815e62ecbbf25b5a378e707182.1439319694.git.Jim.Somerville@windriver.com>
-From: Jim Somerville <Jim.Somerville@windriver.com>
-Date: Tue, 11 Aug 2015 14:05:00 -0400
-Subject: [PATCH 1/1] lxc: doc: upgrade to use docbook 3.1 DTD
-
-docbook2man fails to build the man pages in poky
-due to missing the ancient Davenport 3.0 DTD.
-Poky meta has the Oasis 3.1 version so upgrade
-to use that instead.
-
-Signed-off-by: Jim Somerville <Jim.Somerville@windriver.com>
----
- configure.ac | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/configure.ac b/configure.ac
-index 4972803..2e67b5e 100644
---- a/configure.ac
-+++ b/configure.ac
-@@ -179,7 +179,7 @@ AM_CONDITIONAL([ENABLE_DOCBOOK], [test "x$db2xman" != "x"])
- AM_CONDITIONAL([USE_DOCBOOK2X], [test "x$db2xman" != "xdocbook2man"])
- 
- if test "x$db2xman" = "xdocbook2man"; then
--	docdtd="\"-//Davenport//DTD DocBook V3.0//EN\""
-+	docdtd="\"-//OASIS//DTD DocBook V3.1//EN\""
- else
- 	docdtd="\"-//OASIS//DTD DocBook XML\" \"http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd\""
- fi
--- 
-1.8.3.2
-
diff --git a/import-layers/meta-virtualization/recipes-containers/lxc/files/lxc-fix-B-S.patch b/import-layers/meta-virtualization/recipes-containers/lxc/files/lxc-fix-B-S.patch
deleted file mode 100644
index a776b4f..0000000
--- a/import-layers/meta-virtualization/recipes-containers/lxc/files/lxc-fix-B-S.patch
+++ /dev/null
@@ -1,16 +0,0 @@
-Index: lxc-2.0.0/config/init/upstart/Makefile.am
-===================================================================
---- lxc-2.0.0.orig/config/init/upstart/Makefile.am
-+++ lxc-2.0.0/config/init/upstart/Makefile.am
-@@ -3,9 +3,9 @@
- if INIT_SCRIPT_UPSTART
- install-upstart: lxc.conf lxc-instance.conf lxc-net.conf
- 	$(MKDIR_P) $(DESTDIR)$(sysconfdir)/init/
--	$(INSTALL_DATA) lxc.conf $(DESTDIR)$(sysconfdir)/init/
-+	$(INSTALL_DATA) $(srcdir)/lxc.conf $(DESTDIR)$(sysconfdir)/init/
- 	$(INSTALL_DATA) $(srcdir)/lxc-instance.conf $(DESTDIR)$(sysconfdir)/init/
--	$(INSTALL_DATA) lxc-net.conf $(DESTDIR)$(sysconfdir)/init/
-+	$(INSTALL_DATA) $(srcdir)/lxc-net.conf $(DESTDIR)$(sysconfdir)/init/
- 
- uninstall-upstart:
- 	rm -f $(DESTDIR)$(sysconfdir)/init/lxc.conf
diff --git a/import-layers/meta-virtualization/recipes-containers/lxc/files/run-ptest b/import-layers/meta-virtualization/recipes-containers/lxc/files/run-ptest
deleted file mode 100644
index 23a6256..0000000
--- a/import-layers/meta-virtualization/recipes-containers/lxc/files/run-ptest
+++ /dev/null
@@ -1,4 +0,0 @@
-#!/bin/sh
-
-make -C src/tests -k check-TESTS
-
diff --git a/import-layers/meta-virtualization/recipes-containers/lxc/files/runtest.patch b/import-layers/meta-virtualization/recipes-containers/lxc/files/runtest.patch
deleted file mode 100644
index 6572265..0000000
--- a/import-layers/meta-virtualization/recipes-containers/lxc/files/runtest.patch
+++ /dev/null
@@ -1,32 +0,0 @@
-Add install-ptest rule.
-
-Signed-off-by: Mihaela Sendrea <mihaela.sendrea@enea.com>
-Upstream-status: Pending
-
-diff -uNr a/src/tests/Makefile.am b/src/tests/Makefile.am
---- a/src/tests/Makefile.am	2014-04-07 16:25:59.246238815 +0300
-+++ b/src/tests/Makefile.am	2014-04-10 18:09:43.195772467 +0300
-@@ -54,6 +54,23 @@
- 
- endif
- 
-+TESTS = lxc-test-containertests lxc-test-locktests \
-+        lxc-test-getkeys lxc-test-lxcpath lxc-test-cgpath lxc-test-console \
-+        lxc-test-snapshot lxc-test-concurrent lxc-test-may-control \
-+        lxc-test-reboot lxc-test-list lxc-test-attach lxc-test-device-add-remove
-+
-+buildtest-TESTS: $(TESTS)
-+
-+install-ptest:
-+	install -d $(TEST_DIR)
-+	install -D ../lxc/.libs/liblxc.so $(TEST_DIR)/../lxc/liblxc.so
-+	install -D ../../config/test-driver $(TEST_DIR)/../../config/test-driver
-+	cp Makefile $(TEST_DIR)
-+	@(for file in $(TESTS); do install $$file $(TEST_DIR);  done;)
-+	sed -i 's|^Makefile:|_Makefile:|' $(TEST_DIR)/Makefile
-+	sed -i 's|^all-am:|_all-am:|' $(TEST_DIR)/Makefile
-+	sed -i -e 's|^\(.*\.log:\) \(.*EXEEXT.*\)|\1|g' $(TEST_DIR)/Makefile
-+
- EXTRA_DIST = \
- 	cgpath.c \
- 	clonetest.c \
diff --git a/import-layers/meta-virtualization/recipes-containers/lxc/lxc_2.0.8.bb b/import-layers/meta-virtualization/recipes-containers/lxc/lxc_2.0.8.bb
deleted file mode 100644
index c87b875..0000000
--- a/import-layers/meta-virtualization/recipes-containers/lxc/lxc_2.0.8.bb
+++ /dev/null
@@ -1,192 +0,0 @@
-DESCRIPTION = "lxc aims to use these new functionnalities to provide an userspace container object"
-SECTION = "console/utils"
-LICENSE = "GPLv2"
-LIC_FILES_CHKSUM = "file://COPYING;md5=4fbd65380cdd255951079008b364516c"
-DEPENDS = "libxml2 libcap"
-RDEPENDS_${PN} = " \
-		rsync \
-		gzip \
-		xz \
-		tar \
-		libcap-bin \
-		bridge-utils \
-		dnsmasq \
-		perl-module-strict \
-		perl-module-getopt-long \
-		perl-module-vars \
-		perl-module-warnings-register \
-		perl-module-exporter \
-		perl-module-constant \
-		perl-module-overload \
-		perl-module-exporter-heavy \
-		gmp \
-		libidn \
-		gnutls \
-		nettle \
-"
-
-RDEPENDS_${PN}_append_libc-glibc = " glibc-utils"
-
-RDEPENDS_${PN}-ptest += "file make gmp nettle gnutls bash"
-
-SRC_URI = "http://linuxcontainers.org/downloads/${BPN}-${PV}.tar.gz \
-	file://lxc-1.0.0-disable-udhcp-from-busybox-template.patch \
-	file://runtest.patch \
-	file://run-ptest \
-	file://automake-ensure-VPATH-builds-correctly.patch \
-	file://lxc-fix-B-S.patch \
-	file://lxc-doc-upgrade-to-use-docbook-3.1-DTD.patch \
-	file://logs-optionally-use-base-filenames-to-report-src-fil.patch \
-	file://cgroups-work-around-issue-in-gcc-7.patch \
-	file://dnsmasq.conf \
-	"
-
-SRC_URI[md5sum] = "7bfd95280522d7936c0979dfea92cdb5"
-SRC_URI[sha256sum] = "0d8e34b302cfe4c40c6c9ae5097096aa5cc2c1dfceea3f0f22e3e16c4a4e8494"
-
-S = "${WORKDIR}/${BPN}-${PV}"
-
-# Let's not configure for the host distro.
-#
-PTEST_CONF = "${@bb.utils.contains('DISTRO_FEATURES', 'ptest', '--enable-tests', '', d)}"
-EXTRA_OECONF += "--with-distro=${DISTRO} ${PTEST_CONF}"
-
-EXTRA_OECONF += "--with-init-script=\
-${@bb.utils.contains('DISTRO_FEATURES', 'sysvinit', 'sysvinit,', '', d)}\
-${@bb.utils.contains('DISTRO_FEATURES', 'systemd', 'systemd', '', d)}"
-
-EXTRA_OECONF += "--enable-log-src-basename"
-
-CFLAGS_append = " -Wno-error=deprecated-declarations"
-
-PACKAGECONFIG ??= "templates \
-    ${@bb.utils.contains('DISTRO_FEATURES', 'systemd', 'systemd', '', d)} \
-    ${@bb.utils.contains('DISTRO_FEATURES', 'selinux', 'selinux', '', d)} \
-"
-PACKAGECONFIG[doc] = "--enable-doc --enable-api-docs,--disable-doc --disable-api-docs,,"
-PACKAGECONFIG[rpath] = "--enable-rpath,--disable-rpath,,"
-PACKAGECONFIG[apparmor] = "--enable-apparmor,--disable-apparmor,apparmor,apparmor"
-PACKAGECONFIG[templates] = ",,, ${PN}-templates"
-PACKAGECONFIG[selinux] = "--enable-selinux,--disable-selinux,libselinux,libselinux"
-PACKAGECONFIG[seccomp] ="--enable-seccomp,--disable-seccomp,libseccomp,libseccomp"
-PACKAGECONFIG[systemd] = "--with-systemdsystemunitdir=${systemd_unitdir}/system/,--without-systemdsystemunitdir,systemd,"
-PACKAGECONFIG[python] = "--enable-python,--disable-python,python3,python3-core"
-PACKAGECONFIG[lua] = "--enable-lua,--disable-lua,lua,lua"
-
-# required by python3 to run setup.py
-export BUILD_SYS
-export HOST_SYS
-export STAGING_INCDIR
-export STAGING_LIBDIR
-
-inherit autotools pkgconfig ptest update-rc.d systemd python3native
-
-SYSTEMD_PACKAGES = "${PN}-setup"
-SYSTEMD_SERVICE_${PN}-setup = "lxc.service"
-SYSTEMD_AUTO_ENABLE_${PN}-setup = "disable"
-
-INITSCRIPT_PACKAGES = "${PN}-setup"
-INITSCRIPT_NAME_{PN}-setup = "lxc"
-INITSCRIPT_PARAMS_${PN}-setup = "defaults"
-
-FILES_${PN}-doc = "${mandir} ${infodir}"
-# For LXC the docdir only contains example configuration files and should be included in the lxc package
-FILES_${PN} += "${docdir}"
-FILES_${PN} += "${libdir}/python3*"
-FILES_${PN} += "${datadir}/bash-completion"
-FILES_${PN}-dbg += "${libexecdir}/lxc/.debug"
-FILES_${PN}-dbg += "${libexecdir}/lxc/hooks/.debug"
-PACKAGES =+ "${PN}-templates ${PN}-setup ${PN}-networking ${PN}-lua"
-FILES_lua-${PN} = "${datadir}/lua ${libdir}/lua"
-FILES_lua-${PN}-dbg += "${libdir}/lua/lxc/.debug"
-FILES_${PN}-templates += "${datadir}/lxc/templates"
-RDEPENDS_${PN}-templates += "bash"
-
-ALLOW_EMPTY_${PN}-networking = "1"
-
-FILES_${PN}-setup += "/etc/tmpfiles.d"
-FILES_${PN}-setup += "/lib/systemd/system"
-FILES_${PN}-setup += "/usr/lib/systemd/system"
-FILES_${PN}-setup += "/etc/init.d"
-
-PRIVATE_LIBS_${PN}-ptest = "liblxc.so.1"
-
-CACHED_CONFIGUREVARS += " \
-    ac_cv_path_PYTHON='${STAGING_BINDIR_NATIVE}/python3-native/python3' \
-    am_cv_python_pyexecdir='${exec_prefix}/${libdir}/python3.5/site-packages' \
-    am_cv_python_pythondir='${prefix}/${libdir}/python3.5/site-packages' \
-"
-
-do_install_append() {
-	# The /var/cache/lxc directory created by the Makefile
-	# is wiped out in volatile, we need to create this at boot.
-	rm -rf ${D}${localstatedir}/cache
-	install -d ${D}${sysconfdir}/default/volatiles
-	echo "d root root 0755 ${localstatedir}/cache/lxc none" \
-	     > ${D}${sysconfdir}/default/volatiles/99_lxc
-
-	for i in `grep -l "#! */bin/bash" ${D}${datadir}/lxc/hooks/*`; do \
-	    sed -e 's|#! */bin/bash|#!/bin/sh|' -i $i; done
-
-	if ${@bb.utils.contains('DISTRO_FEATURES', 'sysvinit', 'true', 'false', d)}; then
-	    install -d ${D}${sysconfdir}/init.d
-	    install -m 755 config/init/sysvinit/lxc* ${D}${sysconfdir}/init.d
-	fi
-
-	# since python3-native is used for install location this will not be
-	# suitable for the target and we will have to correct the package install
-	if ${@bb.utils.contains('PACKAGECONFIG', 'python', 'true', 'false', d)}; then
-	    if [ -d ${D}${exec_prefix}/lib/python* ]; then mv ${D}${exec_prefix}/lib/python* ${D}${libdir}/; fi
-	    rmdir --ignore-fail-on-non-empty ${D}${exec_prefix}/lib
-	fi
-
-	# Force the main dnsmasq instance to bind only to specified interfaces and
-	# to not bind to virbr0. Libvirt will run its own instance on this interface.
-	install -d ${D}/${sysconfdir}/dnsmasq.d
-	install -m 644 ${WORKDIR}/dnsmasq.conf ${D}/${sysconfdir}/dnsmasq.d/lxc
-}
-
-EXTRA_OEMAKE += "TEST_DIR=${D}${PTEST_PATH}/src/tests"
-
-do_install_ptest() {
-	oe_runmake -C src/tests install-ptest
-}
-
-pkg_postinst_${PN}() {
-	if [ -z "$D" ] && [ -e /etc/init.d/populate-volatile.sh ] ; then
-		/etc/init.d/populate-volatile.sh update
-	fi
-}
-
-pkg_postinst_${PN}-networking() {
-	if [ "x$D" != "x" ]; then
-		exit 1
-	fi
-
-	# setup for our bridge
-        echo "lxc.network.link=lxcbr0" >> ${sysconfdir}/lxc/default.conf
-
-cat >> /etc/network/interfaces << EOF
-
-auto lxcbr0
-iface lxcbr0 inet dhcp
-	bridge_ports eth0
-	bridge_fd 0
-	bridge_maxwait 0
-EOF
-
-cat<<EOF>/etc/network/if-pre-up.d/lxcbr0
-#! /bin/sh
-
-if test "x\$IFACE" = xlxcbr0 ; then
-        brctl show |grep lxcbr0 > /dev/null 2>/dev/null
-        if [ \$? != 0 ] ; then
-                brctl addbr lxcbr0
-                brctl addif lxcbr0 eth0
-                ip addr flush eth0
-                ifconfig eth0 up
-        fi
-fi
-EOF
-chmod 755 /etc/network/if-pre-up.d/lxcbr0
-}
diff --git a/import-layers/meta-virtualization/recipes-containers/oci-image-spec/oci-image-spec_git.bb b/import-layers/meta-virtualization/recipes-containers/oci-image-spec/oci-image-spec_git.bb
deleted file mode 100644
index 92a8399..0000000
--- a/import-layers/meta-virtualization/recipes-containers/oci-image-spec/oci-image-spec_git.bb
+++ /dev/null
@@ -1,41 +0,0 @@
-DESCRIPTION = "The OCI Image Format project creates and maintains the software shipping container image format spec"
-HOMEPAGE = "https://github.com/opencontainers/image-spec"
-SECTION = "devel/go"
-LICENSE = "Apache-2.0"
-LIC_FILES_CHKSUM = "file://src/${PKG_NAME}/LICENSE;md5=27ef03aa2da6e424307f102e8b42621d"
-
-SRCNAME = "image-spec"
-
-PKG_NAME = "github.com/opencontainers/${SRCNAME}"
-SRC_URI = "git://${PKG_NAME}.git;destsuffix=git/src/${PKG_NAME}"
-
-SRCREV = "91d3eaabebcdc329edd9b4ff0f28f8f90022201f"
-PV = "v1.0.0-rc4+git${SRCPV}"
-
-S = "${WORKDIR}/git"
-
-# NO-OP the do compile rule because this recipe is source only.
-do_compile() {
-}
-
-do_install() {
-	install -d ${D}${prefix}/local/go/src/${PKG_NAME}
-	for j in $(cd ${S} && find src/${PKG_NAME} -name "*.go"); do
-	    if [ ! -d ${D}${prefix}/local/go/$(dirname $j) ]; then
-	        mkdir -p ${D}${prefix}/local/go/$(dirname $j)
-	    fi
-	    cp $j ${D}${prefix}/local/go/$j
-	done
-	cp -r ${S}/src/${PKG_NAME}/LICENSE ${D}${prefix}/local/go/src/${PKG_NAME}/
-}
-
-SYSROOT_PREPROCESS_FUNCS += "image_spec_file_sysroot_preprocess"
-
-image_spec_file_sysroot_preprocess () {
-    install -d ${SYSROOT_DESTDIR}${prefix}/local/go/src/${PKG_NAME}
-    cp -r ${D}${prefix}/local/go/src/${PKG_NAME} ${SYSROOT_DESTDIR}${prefix}/local/go/src/$(dirname ${PKG_NAME})
-}
-
-FILES_${PN} += "${prefix}/local/go/src/${PKG_NAME}/*"
-
-CLEANBROKEN = "1"
\ No newline at end of file
diff --git a/import-layers/meta-virtualization/recipes-containers/oci-image-tools/files/0001-config-make-Config.User-mapping-errors-a-warning.patch b/import-layers/meta-virtualization/recipes-containers/oci-image-tools/files/0001-config-make-Config.User-mapping-errors-a-warning.patch
deleted file mode 100644
index 78d2b9d..0000000
--- a/import-layers/meta-virtualization/recipes-containers/oci-image-tools/files/0001-config-make-Config.User-mapping-errors-a-warning.patch
+++ /dev/null
@@ -1,30 +0,0 @@
-From fbd62eff9ff2f447c2eb4634398110609fbf9d59 Mon Sep 17 00:00:00 2001
-From: Bruce Ashfield <bruce.ashfield@windriver.com>
-Date: Thu, 16 Nov 2017 23:40:17 -0500
-Subject: [PATCH] config: make Config.User mapping errors a warning
-
-Rather than throwing an error if we can't map a user to a uid,
-output a warning. We aren't actually running the code, but are
-just extracting it .. so the user not existing isn't an issue.
-
-Signed-off-by: Bruce Ashfield <bruce.ashfield@windriver.com>
----
- image/config.go | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/src/import/image/config.go b/src/import/image/config.go
-index d28b1bc4fe5f..37dfd1f14ef7 100644
---- a/src/import/image/config.go
-+++ b/src/import/image/config.go
-@@ -106,7 +106,7 @@ func (c *config) runtimeSpec(rootfs string) (*specs.Spec, error) {
- 		s.Process.User.UID = uint32(uid)
- 		s.Process.User.GID = uint32(gid)
- 	} else if c.Config.User != "" {
--		return nil, errors.New("config.User: unsupported format")
-+		fmt.Println("Warning: could not map UID for user:", c.Config.User)
- 	}
- 
- 	s.Linux = &specs.Linux{}
--- 
-2.4.0.53.g8440f74
-
diff --git a/import-layers/meta-virtualization/recipes-containers/oci-image-tools/files/0001-image-manifest-Recursively-remove-pre-existing-entri.patch b/import-layers/meta-virtualization/recipes-containers/oci-image-tools/files/0001-image-manifest-Recursively-remove-pre-existing-entri.patch
deleted file mode 100644
index 5594f97..0000000
--- a/import-layers/meta-virtualization/recipes-containers/oci-image-tools/files/0001-image-manifest-Recursively-remove-pre-existing-entri.patch
+++ /dev/null
@@ -1,78 +0,0 @@
-From 1f205c0aec5ea9e983d61a64e7ce871ae416bebd Mon Sep 17 00:00:00 2001
-From: "W. Trevor King" <wking@tremily.us>
-Date: Tue, 18 Oct 2016 02:16:46 -0700
-Subject: [PATCH 1/2] image/manifest: Recursively remove pre-existing entries
- when unpacking
-
-Implementing the logic that is in-flight with [1], but using recursive
-removal [2].  GNU tar has a --recursive-unlink option that's not
-enabled by default, with the motivation being something like "folks
-would be mad if we blew away a full tree and replaced it with a broken
-symlink" [3].  That makes sense for working filesystems, but we're
-building the rootfs from scratch here so losing information is not a
-concern.  This commit always uses recursive removal to get that old
-thing off the filesystem (whatever it takes ;).
-
-The exception to the removal is if both the tar entry and existing
-path occupant are directories.  In this case we want to use GNU tar's
-default --overwrite-dir behavior, but unpackLayer's metadata handling
-is currently very weak so I've left it at "don't delete the old
-directory".
-
-The reworked directory case also fixes a minor bug from 44210d05
-(cmd/oci-image-tool: fix unpacking..., 2016-07-22, #177) where the:
-
-  if fi, err := os.Lstat(path); !(err == nil && fi.IsDir()) {
-
-block would not error out if the Lstat failed for a reason besides the
-acceptable IsNotExist.  Instead, it would attempt to call MkdirAll,
-which would probably fail for the same reason that Lstat failed
-(e.g. ENOTDIR).  But it's better to handle the Lstat errors directly.
-
-[1]: https://github.com/opencontainers/image-spec/pull/317
-[2]: https://github.com/opencontainers/image-spec/pull/317/files#r79214718
-[3]: https://www.gnu.org/software/tar/manual/html_node/Dealing-with-Old-Files.html
-
-Signed-off-by: W. Trevor King <wking@tremily.us>
----
- image/manifest.go | 22 +++++++++++++++++++---
- 1 file changed, 19 insertions(+), 3 deletions(-)
-
-diff --git a/image/manifest.go b/image/manifest.go
-index 8834c1e5f2f0..144bd4f62219 100644
---- a/src/import/image/manifest.go
-+++ b/src/import/image/manifest.go
-@@ -253,11 +253,27 @@ loop:
- 			continue loop
- 		}
- 
-+		if hdr.Typeflag != tar.TypeDir {
-+			err = os.RemoveAll(path)
-+			if err != nil && !os.IsNotExist(err) {
-+				return err
-+			}
-+		}
-+
- 		switch hdr.Typeflag {
- 		case tar.TypeDir:
--			if fi, err := os.Lstat(path); !(err == nil && fi.IsDir()) {
--				if err2 := os.MkdirAll(path, info.Mode()); err2 != nil {
--					return errors.Wrap(err2, "error creating directory")
-+			fi, err := os.Lstat(path)
-+			if err != nil && !os.IsNotExist(err) {
-+				return err
-+			}
-+			if os.IsNotExist(err) || !fi.IsDir() {
-+				err = os.RemoveAll(path)
-+				if err != nil && !os.IsNotExist(err) {
-+					return err
-+				}
-+				err = os.MkdirAll(path, info.Mode())
-+				if err != nil {
-+					return err
- 				}
- 			}
- 
--- 
-2.4.0.53.g8440f74
-
diff --git a/import-layers/meta-virtualization/recipes-containers/oci-image-tools/files/0002-image-manifest-Split-unpackLayerEntry-into-its-own-f.patch b/import-layers/meta-virtualization/recipes-containers/oci-image-tools/files/0002-image-manifest-Split-unpackLayerEntry-into-its-own-f.patch
deleted file mode 100644
index 69bdcdb..0000000
--- a/import-layers/meta-virtualization/recipes-containers/oci-image-tools/files/0002-image-manifest-Split-unpackLayerEntry-into-its-own-f.patch
+++ /dev/null
@@ -1,242 +0,0 @@
-From 1e55f2a83b1f644803b640b72171b4ae0d95217b Mon Sep 17 00:00:00 2001
-From: "W. Trevor King" <wking@tremily.us>
-Date: Thu, 20 Oct 2016 23:30:22 -0700
-Subject: [PATCH 2/2] image/manifest: Split unpackLayerEntry into its own
- function
-
-To help address:
-
-  $ make lint
-  checking lint
-  image/manifest.go:140::warning: cyclomatic complexity 39 of function unpackLayer() is high (> 35) (gocyclo)
-  ...
-
-Signed-off-by: W. Trevor King <wking@tremily.us>
----
- image/manifest.go | 185 +++++++++++++++++++++++++++++-------------------------
- 1 file changed, 100 insertions(+), 85 deletions(-)
-
-diff --git a/image/manifest.go b/image/manifest.go
-index 144bd4f62219..dfd5a83f70e4 100644
---- a/src/import/image/manifest.go
-+++ b/src/import/image/manifest.go
-@@ -218,116 +218,131 @@ loop:
- 			return errors.Wrapf(err, "error advancing tar stream")
- 		}
- 
--		hdr.Name = filepath.Clean(hdr.Name)
--		if !strings.HasSuffix(hdr.Name, string(os.PathSeparator)) {
--			// Not the root directory, ensure that the parent directory exists
--			parent := filepath.Dir(hdr.Name)
--			parentPath := filepath.Join(dest, parent)
--			if _, err2 := os.Lstat(parentPath); err2 != nil && os.IsNotExist(err2) {
--				if err3 := os.MkdirAll(parentPath, 0755); err3 != nil {
--					return err3
--				}
--			}
--		}
--		path := filepath.Join(dest, hdr.Name)
--		if entries[path] {
--			return fmt.Errorf("duplicate entry for %s", path)
--		}
--		entries[path] = true
--		rel, err := filepath.Rel(dest, path)
-+		var whiteout bool
-+		whiteout, err = unpackLayerEntry(dest, hdr, tr, &entries)
- 		if err != nil {
- 			return err
- 		}
--		info := hdr.FileInfo()
--		if strings.HasPrefix(rel, ".."+string(os.PathSeparator)) {
--			return fmt.Errorf("%q is outside of %q", hdr.Name, dest)
-+		if whiteout {
-+			continue loop
- 		}
- 
--		if strings.HasPrefix(info.Name(), ".wh.") {
--			path = strings.Replace(path, ".wh.", "", 1)
-+		// Directory mtimes must be handled at the end to avoid further
-+		// file creation in them to modify the directory mtime
-+		if hdr.Typeflag == tar.TypeDir {
-+			dirs = append(dirs, hdr)
-+		}
-+	}
-+	for _, hdr := range dirs {
-+		path := filepath.Join(dest, hdr.Name)
- 
--			if err := os.RemoveAll(path); err != nil {
--				return errors.Wrap(err, "unable to delete whiteout path")
-+		finfo := hdr.FileInfo()
-+		// I believe the old version was using time.Now().UTC() to overcome an
-+		// invalid error from chtimes.....but here we lose hdr.AccessTime like this...
-+		if err := os.Chtimes(path, time.Now().UTC(), finfo.ModTime()); err != nil {
-+			return errors.Wrap(err, "error changing time")
-+		}
-+	}
-+	return nil
-+}
-+
-+// unpackLayerEntry unpacks a single entry from a layer.
-+func unpackLayerEntry(dest string, header *tar.Header, reader io.Reader, entries *map[string]bool) (whiteout bool, err error) {
-+	header.Name = filepath.Clean(header.Name)
-+	if !strings.HasSuffix(header.Name, string(os.PathSeparator)) {
-+		// Not the root directory, ensure that the parent directory exists
-+		parent := filepath.Dir(header.Name)
-+		parentPath := filepath.Join(dest, parent)
-+		if _, err2 := os.Lstat(parentPath); err2 != nil && os.IsNotExist(err2) {
-+			if err3 := os.MkdirAll(parentPath, 0755); err3 != nil {
-+				return false, err3
- 			}
-+		}
-+	}
-+	path := filepath.Join(dest, header.Name)
-+	if (*entries)[path] {
-+		return false, fmt.Errorf("duplicate entry for %s", path)
-+	}
-+	(*entries)[path] = true
-+	rel, err := filepath.Rel(dest, path)
-+	if err != nil {
-+		return false, err
-+	}
-+	info := header.FileInfo()
-+	if strings.HasPrefix(rel, ".."+string(os.PathSeparator)) {
-+		return false, fmt.Errorf("%q is outside of %q", header.Name, dest)
-+	}
- 
--			continue loop
-+	if strings.HasPrefix(info.Name(), ".wh.") {
-+		path = strings.Replace(path, ".wh.", "", 1)
-+
-+		if err = os.RemoveAll(path); err != nil {
-+			return true, errors.Wrap(err, "unable to delete whiteout path")
- 		}
- 
--		if hdr.Typeflag != tar.TypeDir {
--			err = os.RemoveAll(path)
--			if err != nil && !os.IsNotExist(err) {
--				return err
--			}
-+		return true, nil
-+	}
-+
-+	if header.Typeflag != tar.TypeDir {
-+		err = os.RemoveAll(path)
-+		if err != nil && !os.IsNotExist(err) {
-+			return false, err
- 		}
-+	}
- 
--		switch hdr.Typeflag {
--		case tar.TypeDir:
--			fi, err := os.Lstat(path)
-+	switch header.Typeflag {
-+	case tar.TypeDir:
-+		fi, err := os.Lstat(path)
-+		if err != nil && !os.IsNotExist(err) {
-+			return false, err
-+		}
-+		if os.IsNotExist(err) || !fi.IsDir() {
-+			err = os.RemoveAll(path)
- 			if err != nil && !os.IsNotExist(err) {
--				return err
--			}
--			if os.IsNotExist(err) || !fi.IsDir() {
--				err = os.RemoveAll(path)
--				if err != nil && !os.IsNotExist(err) {
--					return err
--				}
--				err = os.MkdirAll(path, info.Mode())
--				if err != nil {
--					return err
--				}
-+				return false, err
- 			}
--
--		case tar.TypeReg, tar.TypeRegA:
--			f, err := os.OpenFile(path, os.O_CREATE|os.O_WRONLY, info.Mode())
-+			err = os.MkdirAll(path, info.Mode())
- 			if err != nil {
--				return errors.Wrap(err, "unable to open file")
-+				return false, err
- 			}
-+		}
- 
--			if _, err := io.Copy(f, tr); err != nil {
--				f.Close()
--				return errors.Wrap(err, "unable to copy")
--			}
--			f.Close()
-+	case tar.TypeReg, tar.TypeRegA:
-+		f, err := os.OpenFile(path, os.O_CREATE|os.O_WRONLY, info.Mode())
-+		if err != nil {
-+			return false, errors.Wrap(err, "unable to open file")
-+		}
- 
--		case tar.TypeLink:
--			target := filepath.Join(dest, hdr.Linkname)
-+		if _, err := io.Copy(f, reader); err != nil {
-+			f.Close()
-+			return false, errors.Wrap(err, "unable to copy")
-+		}
-+		f.Close()
- 
--			if !strings.HasPrefix(target, dest) {
--				return fmt.Errorf("invalid hardlink %q -> %q", target, hdr.Linkname)
--			}
-+	case tar.TypeLink:
-+		target := filepath.Join(dest, header.Linkname)
- 
--			if err := os.Link(target, path); err != nil {
--				return err
--			}
-+		if !strings.HasPrefix(target, dest) {
-+			return false, fmt.Errorf("invalid hardlink %q -> %q", target, header.Linkname)
-+		}
- 
--		case tar.TypeSymlink:
--			target := filepath.Join(filepath.Dir(path), hdr.Linkname)
-+		if err := os.Link(target, path); err != nil {
-+			return false, err
-+		}
- 
--			if !strings.HasPrefix(target, dest) {
--				return fmt.Errorf("invalid symlink %q -> %q", path, hdr.Linkname)
--			}
-+	case tar.TypeSymlink:
-+		target := filepath.Join(filepath.Dir(path), header.Linkname)
- 
--			if err := os.Symlink(hdr.Linkname, path); err != nil {
--				return err
--			}
--		case tar.TypeXGlobalHeader:
--			return nil
-+		if !strings.HasPrefix(target, dest) {
-+			return false, fmt.Errorf("invalid symlink %q -> %q", path, header.Linkname)
- 		}
--		// Directory mtimes must be handled at the end to avoid further
--		// file creation in them to modify the directory mtime
--		if hdr.Typeflag == tar.TypeDir {
--			dirs = append(dirs, hdr)
--		}
--	}
--	for _, hdr := range dirs {
--		path := filepath.Join(dest, hdr.Name)
- 
--		finfo := hdr.FileInfo()
--		// I believe the old version was using time.Now().UTC() to overcome an
--		// invalid error from chtimes.....but here we lose hdr.AccessTime like this...
--		if err := os.Chtimes(path, time.Now().UTC(), finfo.ModTime()); err != nil {
--			return errors.Wrap(err, "error changing time")
-+		if err := os.Symlink(header.Linkname, path); err != nil {
-+			return false, err
- 		}
-+	case tar.TypeXGlobalHeader:
-+		return false, nil
- 	}
--	return nil
-+
-+	return false, nil
- }
--- 
-2.4.0.53.g8440f74
-
diff --git a/import-layers/meta-virtualization/recipes-containers/oci-image-tools/oci-image-tools_git.bb b/import-layers/meta-virtualization/recipes-containers/oci-image-tools/oci-image-tools_git.bb
deleted file mode 100644
index 807ee26..0000000
--- a/import-layers/meta-virtualization/recipes-containers/oci-image-tools/oci-image-tools_git.bb
+++ /dev/null
@@ -1,64 +0,0 @@
-HOMEPAGE = "https://github.com/opencontainers/image-tools"
-SUMMARY = "A collection of tools for working with the OCI image format specification"
-LICENSE = "Apache-2"
-LIC_FILES_CHKSUM = "file://src/import/LICENSE;md5=e3fc50a88d0a364313df4b21ef20c29e"
-
-DEPENDS = "\
-           oci-image-spec \
-           oci-runtime-spec \
-           go-digest \
-           go-errors \
-           spf13-cobra \
-           spf13-pflag \
-          "
-
-SRC_URI = "git://github.com/opencontainers/image-tools.git \
-           file://0001-image-manifest-Recursively-remove-pre-existing-entri.patch \
-           file://0002-image-manifest-Split-unpackLayerEntry-into-its-own-f.patch \
-           file://0001-config-make-Config.User-mapping-errors-a-warning.patch"
-
-SRCREV = "4abe1a166f9be97e8e71b1bb4d7599cc29323011"
-PV = "0.2.0-dev+git${SRCPV}"
-GO_IMPORT = "import"
-
-inherit goarch
-inherit go
-
-# This disables seccomp and apparmor, which are on by default in the
-# go package. 
-EXTRA_OEMAKE="BUILDTAGS=''"
-
-do_compile() {
-	export GOARCH="${TARGET_GOARCH}"
-	export GOROOT="${STAGING_LIBDIR_NATIVE}/${TARGET_SYS}/go"
-	# Setup vendor directory so that it can be used in GOPATH.
-	#
-	# Go looks in a src directory under any directory in GOPATH but riddler
-	# uses 'vendor' instead of 'vendor/src'. We can fix this with a symlink.
-	#
-	# We also need to link in the ipallocator directory as that is not under
-	# a src directory.
-	ln -sfn . "${S}/src/import/vendor/src"
-	mkdir -p "${S}/src/import/vendor/src/github.com/opencontainers/image-tools/"
-	ln -sfn "${S}/src/import/image" "${S}/src/import/vendor/src/github.com/opencontainers/image-tools/image"
-	ln -sfn "${S}/src/import/version" "${S}/src/import/vendor/src/github.com/opencontainers/image-tools/version"
-	export GOPATH="${S}/src/import/vendor"
-
-	# Pass the needed cflags/ldflags so that cgo
-	# can find the needed headers files and libraries
-	export CGO_ENABLED="1"
-	export CFLAGS=""
-	export LDFLAGS=""
-	export CGO_CFLAGS="${BUILDSDK_CFLAGS} --sysroot=${STAGING_DIR_TARGET}"
-	export CGO_LDFLAGS="${BUILDSDK_LDFLAGS} --sysroot=${STAGING_DIR_TARGET}"
-	cd ${S}/src/import
-
-	oe_runmake tool
-}
-
-do_install() {
-	install -d ${D}/${sbindir}
-	install ${S}/src/import/oci-image-tool ${D}/${sbindir}/
-}
-
-INSANE_SKIP_${PN} += "ldflags"
diff --git a/import-layers/meta-virtualization/recipes-containers/oci-runtime-spec/oci-runtime-spec_git.bb b/import-layers/meta-virtualization/recipes-containers/oci-runtime-spec/oci-runtime-spec_git.bb
deleted file mode 100644
index deba7b3..0000000
--- a/import-layers/meta-virtualization/recipes-containers/oci-runtime-spec/oci-runtime-spec_git.bb
+++ /dev/null
@@ -1,41 +0,0 @@
-DESCRIPTION = "The Open Container Initiative develops specifications for standards on Operating System process and application containers"
-HOMEPAGE = "https://github.com/opencontainers/runtime-spec"
-SECTION = "devel/go"
-LICENSE = "Apache-2.0"
-LIC_FILES_CHKSUM = "file://src/${PKG_NAME}/LICENSE;md5=b355a61a394a504dacde901c958f662c"
-
-SRCNAME = "runtime-spec"
-
-PKG_NAME = "github.com/opencontainers/${SRCNAME}"
-SRC_URI = "git://${PKG_NAME}.git;destsuffix=git/src/${PKG_NAME}"
-
-SRCREV = "a39b1cd4fdf7743ab721cc9da58abbee2f8624d1"
-PV = "v1.0.0-rc6+git${SRCPV}"
-
-S = "${WORKDIR}/git"
-
-# NO-OP the do compile rule because this recipe is source only.
-do_compile() {
-}
-
-do_install() {
-	install -d ${D}${prefix}/local/go/src/${PKG_NAME}
-	for j in $(cd ${S} && find src/${PKG_NAME} -name "*.go" -not -path "*/.tool/*"); do
-	    if [ ! -d ${D}${prefix}/local/go/$(dirname $j) ]; then
-	        mkdir -p ${D}${prefix}/local/go/$(dirname $j)
-	    fi
-	    cp $j ${D}${prefix}/local/go/$j
-	done
-	cp -r ${S}/src/${PKG_NAME}/LICENSE ${D}${prefix}/local/go/src/${PKG_NAME}/
-}
-
-SYSROOT_PREPROCESS_FUNCS += "runtime_spec_file_sysroot_preprocess"
-
-runtime_spec_file_sysroot_preprocess () {
-    install -d ${SYSROOT_DESTDIR}${prefix}/local/go/src/${PKG_NAME}
-    cp -r ${D}${prefix}/local/go/src/${PKG_NAME} ${SYSROOT_DESTDIR}${prefix}/local/go/src/$(dirname ${PKG_NAME})
-}
-
-FILES_${PN} += "${prefix}/local/go/src/${PKG_NAME}/*"
-
-CLEANBROKEN = "1"
diff --git a/import-layers/meta-virtualization/recipes-containers/oci-runtime-tools/files/0001-Revert-implement-add-set-function-for-hooks-items.patch b/import-layers/meta-virtualization/recipes-containers/oci-runtime-tools/files/0001-Revert-implement-add-set-function-for-hooks-items.patch
deleted file mode 100644
index 99a9310..0000000
--- a/import-layers/meta-virtualization/recipes-containers/oci-runtime-tools/files/0001-Revert-implement-add-set-function-for-hooks-items.patch
+++ /dev/null
@@ -1,202 +0,0 @@
-From 2911eaabab92ec2cdea2b173c3429db4a52bee2f Mon Sep 17 00:00:00 2001
-From: Bruce Ashfield <bruce.ashfield@windriver.com>
-Date: Wed, 20 Sep 2017 23:28:52 -0400
-Subject: [PATCH] Revert "implement add/set function for hooks items"
-
-This reverts commit df3a46feb971386f922c7c2c2822b88301f87cb0.
----
- cmd/oci-runtime-tool/generate.go | 12 ++++++------
- generate/generate.go             | 42 ++++++----------------------------------
- 2 files changed, 12 insertions(+), 42 deletions(-)
-
-diff --git a/src/import/cmd/oci-runtime-tool/generate.go b/src/import/cmd/oci-runtime-tool/generate.go
-index ed11fe8f3729..7121ce5fe07e 100644
---- a/src/import/cmd/oci-runtime-tool/generate.go
-+++ b/src/import/cmd/oci-runtime-tool/generate.go
-@@ -354,7 +354,7 @@ func setupSpec(g *generate.Generator, context *cli.Context) error {
- 		for _, postStartEnv := range postStartEnvs {
- 			path, env, err := parseHookEnv(postStartEnv)
- 			if err != nil {
--				return err
-+				return nil
- 			}
- 			g.AddPostStartHookEnv(path, env)
- 		}
-@@ -387,7 +387,7 @@ func setupSpec(g *generate.Generator, context *cli.Context) error {
- 		for _, postStopEnv := range postStopEnvs {
- 			path, env, err := parseHookEnv(postStopEnv)
- 			if err != nil {
--				return err
-+				return nil
- 			}
- 			g.AddPostStopHookEnv(path, env)
- 		}
-@@ -398,7 +398,7 @@ func setupSpec(g *generate.Generator, context *cli.Context) error {
- 		for _, postStopTimeout := range postStopTimeouts {
- 			path, timeout, err := parseHookTimeout(postStopTimeout)
- 			if err != nil {
--				return err
-+				return nil
- 			}
- 			g.AddPostStopHookTimeout(path, timeout)
- 		}
-@@ -409,7 +409,7 @@ func setupSpec(g *generate.Generator, context *cli.Context) error {
- 		for _, hook := range preStartHooks {
- 			path, args, err := parseHook(hook)
- 			if err != nil {
--				return err
-+				return nil
- 			}
- 			g.AddPreStartHook(path, args)
- 		}
-@@ -420,7 +420,7 @@ func setupSpec(g *generate.Generator, context *cli.Context) error {
- 		for _, preStartEnv := range preStartEnvs {
- 			path, env, err := parseHookEnv(preStartEnv)
- 			if err != nil {
--				return err
-+				return nil
- 			}
- 			g.AddPreStartHookEnv(path, env)
- 		}
-@@ -431,7 +431,7 @@ func setupSpec(g *generate.Generator, context *cli.Context) error {
- 		for _, preStartTimeout := range preStartTimeouts {
- 			path, timeout, err := parseHookTimeout(preStartTimeout)
- 			if err != nil {
--				return err
-+				return nil
- 			}
- 			g.AddPreStartHookTimeout(path, timeout)
- 		}
-diff --git a/src/import/generate/generate.go b/src/import/generate/generate.go
-index 84762c3cbd05..ef5d2cc95b3c 100644
---- a/src/import/generate/generate.go
-+++ b/src/import/generate/generate.go
-@@ -744,39 +744,29 @@ func (g *Generator) ClearPreStartHooks() {
- func (g *Generator) AddPreStartHook(path string, args []string) {
- 	g.initSpecHooks()
- 	hook := rspec.Hook{Path: path, Args: args}
--	for i, hook := range g.spec.Hooks.Prestart {
--		if hook.Path == path {
--			g.spec.Hooks.Prestart[i] = hook
--			return
--		}
--	}
- 	g.spec.Hooks.Prestart = append(g.spec.Hooks.Prestart, hook)
- }
- 
- // AddPreStartHookEnv adds envs of a prestart hook into g.spec.Hooks.Prestart.
- func (g *Generator) AddPreStartHookEnv(path string, envs []string) {
--	g.initSpecHooks()
-+	g.initSpec()
- 	for i, hook := range g.spec.Hooks.Prestart {
- 		if hook.Path == path {
- 			g.spec.Hooks.Prestart[i].Env = envs
- 			return
- 		}
- 	}
--	hook := rspec.Hook{Path: path, Env: envs}
--	g.spec.Hooks.Prestart = append(g.spec.Hooks.Prestart, hook)
- }
- 
- // AddPreStartHookTimeout adds timeout of a prestart hook into g.spec.Hooks.Prestart.
- func (g *Generator) AddPreStartHookTimeout(path string, timeout int) {
--	g.initSpecHooks()
-+	g.initSpec()
- 	for i, hook := range g.spec.Hooks.Prestart {
- 		if hook.Path == path {
- 			g.spec.Hooks.Prestart[i].Timeout = &timeout
- 			return
- 		}
- 	}
--	hook := rspec.Hook{Path: path, Timeout: &timeout}
--	g.spec.Hooks.Prestart = append(g.spec.Hooks.Prestart, hook)
- }
- 
- // ClearPostStopHooks clear g.spec.Hooks.Poststop.
-@@ -794,39 +784,29 @@ func (g *Generator) ClearPostStopHooks() {
- func (g *Generator) AddPostStopHook(path string, args []string) {
- 	g.initSpecHooks()
- 	hook := rspec.Hook{Path: path, Args: args}
--	for i, hook := range g.spec.Hooks.Poststop {
--		if hook.Path == path {
--			g.spec.Hooks.Poststop[i] = hook
--			return
--		}
--	}
- 	g.spec.Hooks.Poststop = append(g.spec.Hooks.Poststop, hook)
- }
- 
- // AddPostStopHookEnv adds envs of a poststop hook into g.spec.Hooks.Poststop.
- func (g *Generator) AddPostStopHookEnv(path string, envs []string) {
--	g.initSpecHooks()
-+	g.initSpec()
- 	for i, hook := range g.spec.Hooks.Poststop {
- 		if hook.Path == path {
- 			g.spec.Hooks.Poststop[i].Env = envs
- 			return
- 		}
- 	}
--	hook := rspec.Hook{Path: path, Env: envs}
--	g.spec.Hooks.Poststop = append(g.spec.Hooks.Poststop, hook)
- }
- 
- // AddPostStopHookTimeout adds timeout of a poststop hook into g.spec.Hooks.Poststop.
- func (g *Generator) AddPostStopHookTimeout(path string, timeout int) {
--	g.initSpecHooks()
-+	g.initSpec()
- 	for i, hook := range g.spec.Hooks.Poststop {
- 		if hook.Path == path {
- 			g.spec.Hooks.Poststop[i].Timeout = &timeout
- 			return
- 		}
- 	}
--	hook := rspec.Hook{Path: path, Timeout: &timeout}
--	g.spec.Hooks.Poststop = append(g.spec.Hooks.Poststop, hook)
- }
- 
- // ClearPostStartHooks clear g.spec.Hooks.Poststart.
-@@ -844,39 +824,29 @@ func (g *Generator) ClearPostStartHooks() {
- func (g *Generator) AddPostStartHook(path string, args []string) {
- 	g.initSpecHooks()
- 	hook := rspec.Hook{Path: path, Args: args}
--	for i, hook := range g.spec.Hooks.Poststart {
--		if hook.Path == path {
--			g.spec.Hooks.Poststart[i] = hook
--			return
--		}
--	}
- 	g.spec.Hooks.Poststart = append(g.spec.Hooks.Poststart, hook)
- }
- 
- // AddPostStartHookEnv adds envs of a poststart hook into g.spec.Hooks.Poststart.
- func (g *Generator) AddPostStartHookEnv(path string, envs []string) {
--	g.initSpecHooks()
-+	g.initSpec()
- 	for i, hook := range g.spec.Hooks.Poststart {
- 		if hook.Path == path {
- 			g.spec.Hooks.Poststart[i].Env = envs
- 			return
- 		}
- 	}
--	hook := rspec.Hook{Path: path, Env: envs}
--	g.spec.Hooks.Poststart = append(g.spec.Hooks.Poststart, hook)
- }
- 
- // AddPostStartHookTimeout adds timeout of a poststart hook into g.spec.Hooks.Poststart.
- func (g *Generator) AddPostStartHookTimeout(path string, timeout int) {
--	g.initSpecHooks()
-+	g.initSpec()
- 	for i, hook := range g.spec.Hooks.Poststart {
- 		if hook.Path == path {
- 			g.spec.Hooks.Poststart[i].Timeout = &timeout
- 			return
- 		}
- 	}
--	hook := rspec.Hook{Path: path, Timeout: &timeout}
--	g.spec.Hooks.Poststart = append(g.spec.Hooks.Poststart, hook)
- }
- 
- // AddTmpfsMount adds a tmpfs mount into g.spec.Mounts.
--- 
-2.4.0.53.g8440f74
-
diff --git a/import-layers/meta-virtualization/recipes-containers/oci-runtime-tools/oci-runtime-tools_git.bb b/import-layers/meta-virtualization/recipes-containers/oci-runtime-tools/oci-runtime-tools_git.bb
deleted file mode 100644
index 61b68b5..0000000
--- a/import-layers/meta-virtualization/recipes-containers/oci-runtime-tools/oci-runtime-tools_git.bb
+++ /dev/null
@@ -1,52 +0,0 @@
-HOMEPAGE = "https://github.com/opencontainers/runtime-tools"
-SUMMARY = "oci-runtime-tool is a collection of tools for working with the OCI runtime specification"
-LICENSE = "GPLv2"
-LIC_FILES_CHKSUM = "file://src/import/LICENSE;md5=b355a61a394a504dacde901c958f662c"
-
-SRC_URI = "git://github.com/opencontainers/runtime-tools.git \
-           file://0001-Revert-implement-add-set-function-for-hooks-items.patch \
-           "
-
-SRCREV = "6e7da8148f4de2c9e9c9d3b345576898d4f412cb"
-PV = "0.1.0+git${SRCPV}"
-GO_IMPORT = "import"
-
-INSANE_SKIP_${PN} += "ldflags"
-
-inherit goarch
-inherit go
-
-do_compile() {
-	export GOARCH="${TARGET_GOARCH}"
-	export GOROOT="${STAGING_LIBDIR_NATIVE}/${TARGET_SYS}/go"
-	export GOPATH="${S}/src/import:${S}/src/import/vendor"
-
-	# Pass the needed cflags/ldflags so that cgo
-	# can find the needed headers files and libraries
-	export CGO_ENABLED="1"
-	export CFLAGS=""
-	export LDFLAGS=""
-	export CGO_CFLAGS="${BUILDSDK_CFLAGS} --sysroot=${STAGING_DIR_TARGET}"
-	export CGO_LDFLAGS="${BUILDSDK_LDFLAGS} --sysroot=${STAGING_DIR_TARGET}"
-
-	# link fixups for compilation
-	rm -f ${S}/src/import/vendor/src
-	ln -sf ./ ${S}/src/import/vendor/src
-	mkdir -p ${S}/src/import/vendor/github.com/opencontainers/runtime-tools
-	ln -sf ../../../../generate ${S}/src/import/vendor/github.com/opencontainers/runtime-tools/generate
-	ln -sf ../../../../validate ${S}/src/import/vendor/github.com/opencontainers/runtime-tools/validate
-	ln -sf ../../../../cmd ${S}/src/import/vendor/github.com/opencontainers/runtime-tools/cmd
-	ln -sf ../../../../error ${S}/src/import/vendor/github.com/opencontainers/runtime-tools/error
-	ln -sf ../../../../specerror ${S}/src/import/vendor/github.com/opencontainers/runtime-tools/specerror
-	cd ${S}/src/import
-
-	oe_runmake
-}
-
-do_install() {
-	install -d ${D}/${sbindir}
-	install ${S}/src/import/oci-runtime-tool ${D}/${sbindir}/oci-runtime-tool
-}
-
-deltask compile_ptest_base
-
diff --git a/import-layers/meta-virtualization/recipes-containers/oci-systemd-hook/oci-systemd-hook/0001-Add-additional-cgroup-mounts-from-root-NS-automatica.patch b/import-layers/meta-virtualization/recipes-containers/oci-systemd-hook/oci-systemd-hook/0001-Add-additional-cgroup-mounts-from-root-NS-automatica.patch
deleted file mode 100644
index 753a77d..0000000
--- a/import-layers/meta-virtualization/recipes-containers/oci-systemd-hook/oci-systemd-hook/0001-Add-additional-cgroup-mounts-from-root-NS-automatica.patch
+++ /dev/null
@@ -1,76 +0,0 @@
-From f59cddcedd6535e0b809ec9b4e95672d34b41a16 Mon Sep 17 00:00:00 2001
-From: Jason Wessel <jason.wessel@windriver.com>
-Date: Tue, 14 Nov 2017 07:41:41 -0800
-Subject: [PATCH] Add additional cgroup mounts from root NS automatically
-
-Signed-off-by: Jason Wessel <jason.wessel@windriver.com>
----
- src/systemdhook.c | 45 +++++++++++++++++++++++++++++++++++++++++++++
- 1 file changed, 45 insertions(+)
-
-diff --git a/src/systemdhook.c b/src/systemdhook.c
-index 78575ef..f735484 100644
---- a/src/systemdhook.c
-+++ b/src/systemdhook.c
-@@ -238,6 +238,11 @@ static char *get_process_cgroup_subsystem_path(int pid, const char *subsystem) {
- static int mount_cgroup(const char *rootfs, const char *options, char *systemd_path)
- {
- 	_cleanup_free_ char *cgroup_path = NULL;
-+	char *spath, *dpath;
-+	DIR *dir;
-+	struct dirent *d;
-+	char link[80];
-+	int got;
- 
- 	if (asprintf(&cgroup_path, "%s/%s", rootfs, CGROUP_ROOT) < 0) {
- 		pr_perror("Failed to create path for %s", CGROUP_ROOT);
-@@ -256,6 +261,46 @@ static int mount_cgroup(const char *rootfs, const char *options, char *systemd_p
- 		pr_perror("Failed to mkdir new dest: %s", systemd_path);
- 		return -1;
- 	}
-+	/* Create all additional cgroup mounts which are in the root namespace */
-+	dir = opendir(CGROUP_ROOT);
-+	if (!dir) {
-+		pr_perror("Failed to open %s", CGROUP_ROOT);
-+		return -1;
-+	}
-+	/* Skip "." and ".." */
-+	readdir(dir);
-+	readdir(dir);
-+	while ((d = readdir(dir))) {
-+		/* Systemd is already handled above */
-+		if (strcmp(d->d_name, "systemd") == 0) {
-+			continue;
-+		}
-+		if (asprintf(&spath, "%s/%s", CGROUP_ROOT, d->d_name) < 0) {
-+			pr_perror("Failed to create path for %s", d->d_name);
-+			return -1;
-+		}
-+		if (asprintf(&dpath, "%s%s/%s", rootfs, CGROUP_ROOT, d->d_name) < 0) {
-+			pr_perror("Failed to create path for %s", d->d_name);
-+			return -1;
-+		}
-+		got = readlink(spath, link, sizeof(link) - 1);
-+		if (got > 0) {
-+			link[got] = '\0';
-+			symlink(link, dpath);
-+		} else {
-+			if ((makepath(dpath, 0755) == -1) && (errno != EEXIST)) {
-+				pr_perror("Failed to mkdir new dest: %s", dpath);
-+				return -1;
-+			}
-+			if (bind_mount(spath, dpath, false)) {
-+				pr_perror("Failed to bind mount %s on %s", spath, dpath);
-+				return -1;
-+			}
-+		}
-+		free(spath);
-+		free(dpath);
-+	}
-+	closedir(dir);
- 	if (mount(cgroup_path, cgroup_path, "bind", MS_REMOUNT|MS_BIND|MS_RDONLY, "") == -1) {
- 		pr_perror("Failed to remount %s readonly", cgroup_path);
- 		return -1;
--- 
-2.11.0
-
diff --git a/import-layers/meta-virtualization/recipes-containers/oci-systemd-hook/oci-systemd-hook/0001-configure-drop-selinux-support.patch b/import-layers/meta-virtualization/recipes-containers/oci-systemd-hook/oci-systemd-hook/0001-configure-drop-selinux-support.patch
deleted file mode 100644
index 510126e..0000000
--- a/import-layers/meta-virtualization/recipes-containers/oci-systemd-hook/oci-systemd-hook/0001-configure-drop-selinux-support.patch
+++ /dev/null
@@ -1,25 +0,0 @@
-From 12c263703a0b0ae92566de7e5440fce7b59cd9be Mon Sep 17 00:00:00 2001
-From: Bruce Ashfield <bruce.ashfield@windriver.com>
-Date: Tue, 8 Nov 2016 13:16:19 -0500
-Subject: [PATCH] configure: drop selinux support
-
-Signed-off-by: Bruce Ashfield <bruce.ashfield@windriver.com>
----
- configure.ac | 1 -
- 1 file changed, 1 deletion(-)
-
-diff --git a/configure.ac b/configure.ac
-index c1275acb253d..eaba7fbb57e2 100644
---- a/configure.ac
-+++ b/configure.ac
-@@ -8,7 +8,6 @@ AC_USE_SYSTEM_EXTENSIONS
- AC_SYS_LARGEFILE
- 
- PKG_CHECK_MODULES([YAJL], [yajl >= 2.0.0])
--PKG_CHECK_MODULES([SELINUX], [libselinux >= 2.0.0])
- PKG_CHECK_MODULES([LIBMOUNT], [mount >= 2.23.0])
- 
- AC_MSG_CHECKING([whether to disable argument checking])
--- 
-2.4.0.53.g8440f74
-
diff --git a/import-layers/meta-virtualization/recipes-containers/oci-systemd-hook/oci-systemd-hook/0001-selinux-drop-selinux-support.patch b/import-layers/meta-virtualization/recipes-containers/oci-systemd-hook/oci-systemd-hook/0001-selinux-drop-selinux-support.patch
deleted file mode 100644
index 5016f6e..0000000
--- a/import-layers/meta-virtualization/recipes-containers/oci-systemd-hook/oci-systemd-hook/0001-selinux-drop-selinux-support.patch
+++ /dev/null
@@ -1,45 +0,0 @@
-From 9b66394c712ec0d0fcb2052baa7f590621a53461 Mon Sep 17 00:00:00 2001
-From: Bruce Ashfield <bruce.ashfield@windriver.com>
-Date: Tue, 8 Nov 2016 13:15:46 -0500
-Subject: [PATCH] selinux: drop selinux support
-
-Signed-off-by: Bruce Ashfield <bruce.ashfield@windriver.com>
----
- src/systemdhook.c |   12 ------------
- 1 file changed, 12 deletions(-)
-
---- a/src/systemdhook.c
-+++ b/src/systemdhook.c
-@@ -16,7 +16,6 @@
- #include <errno.h>
- #include <inttypes.h>
- #include <linux/limits.h>
--#include <selinux/selinux.h>
- #include <yajl/yajl_tree.h>
- #include <stdbool.h>
- 
-@@ -129,9 +128,6 @@ static int chperm(const char *path, cons
- 				closedir(dir);
- 				return -1;
- 			}
--			if (setfilecon (full_path, label) < 0) {
--				pr_perror("Failed to set context %s on %s", label, full_path);
--			}
- 
- 			if (doChown) {
- 				/* Change uid and gid to something the container can handle */
-@@ -496,14 +492,6 @@ static int prestart(const char *rootfs,
- 				return -1;
- 			}
- 		}
--
--		if (strcmp("", mount_label)) {
--			rc = setfilecon(journal_dir, (security_context_t)mount_label);
--			if (rc < 0) {
--				pr_perror("Failed to set journal dir selinux context");
--				return -1;
--			}
--		}
- 
- 		/* Attempt to creare /var/log/journal inside of rootfs,
- 		   if successful, or directory exists, mount tmpfs on top of
diff --git a/import-layers/meta-virtualization/recipes-containers/oci-systemd-hook/oci-systemd-hook_git.bb b/import-layers/meta-virtualization/recipes-containers/oci-systemd-hook/oci-systemd-hook_git.bb
deleted file mode 100644
index e07b741..0000000
--- a/import-layers/meta-virtualization/recipes-containers/oci-systemd-hook/oci-systemd-hook_git.bb
+++ /dev/null
@@ -1,36 +0,0 @@
-DESCRIPTION = "OCI systemd hook enables users to run systemd in docker and OCI"
-SECTION = "console/utils"
-LICENSE = "GPLv3"
-LIC_FILES_CHKSUM = "file://LICENSE;md5=d32239bcb673463ab874e80d47fae504"
-PRIORITY = "optional"
-
-DEPENDS = "yajl util-linux"
-
-SRCREV = "1ac958a4197a9ea52174812fc7d7d036af8140d3"
-SRC_URI = "git://github.com/projectatomic/oci-systemd-hook \
-           file://0001-selinux-drop-selinux-support.patch \
-           file://0001-configure-drop-selinux-support.patch \
-           file://0001-Add-additional-cgroup-mounts-from-root-NS-automatica.patch \
-"
-
-PV = "0.0.1+git${SRCPV}"
-S = "${WORKDIR}/git"
-
-inherit autotools pkgconfig
-
-PACKAGECONFIG ??= ""
-PACKAGECONFIG[selinux] = ",,libselinux"
-
-EXTRA_OECONF += "--libexecdir=${libexecdir}/oci/hooks.d"
-
-# nothing to compile, we do it all in the install task
-do_compile[noexec] = "1"
-
-do_install() {
-    # Avoid building docs, and other artifacts by surgically calling the
-    # semi-internal target of "install-exec-am"
-    oe_runmake 'DESTDIR=${D}' install-exec-am
-}
-
-FILES_${PN} += "${libexecdir}/oci/hooks.d/"
-
diff --git a/import-layers/meta-virtualization/recipes-containers/riddler/riddler_git.bb b/import-layers/meta-virtualization/recipes-containers/riddler/riddler_git.bb
deleted file mode 100644
index 9f7fe6b..0000000
--- a/import-layers/meta-virtualization/recipes-containers/riddler/riddler_git.bb
+++ /dev/null
@@ -1,50 +0,0 @@
-HOMEPAGE = "https://github.com/jfrazelle/riddler"
-SUMMARY = "Convert `docker inspect` to opencontainers (OCI compatible) runc spec."
-LICENSE = "MIT"
-LIC_FILES_CHKSUM = "file://src/import/LICENSE;md5=20ce4c6a4f32d6ee4a68e3a7506db3f1"
-
-SRC_URI = "git://github.com/jfrazelle/riddler;branch=master"
-SRCREV = "23befa0b232877b5b502b828e24161d801bd67f6"
-PV = "0.1.0+git${SRCPV}"
-GO_IMPORT = "import"
-
-S = "${WORKDIR}/git"
-
-inherit goarch
-inherit go
-
-# This disables seccomp and apparmor, which are on by default in the
-# go package. 
-EXTRA_OEMAKE="BUILDTAGS=''"
-
-do_compile() {
-	export GOARCH="${TARGET_GOARCH}"
-	export GOROOT="${STAGING_LIBDIR_NATIVE}/${TARGET_SYS}/go"
-	# Setup vendor directory so that it can be used in GOPATH.
-	#
-	# Go looks in a src directory under any directory in GOPATH but riddler
-	# uses 'vendor' instead of 'vendor/src'. We can fix this with a symlink.
-	#
-	# We also need to link in the ipallocator directory as that is not under
-	# a src directory.
-	ln -sfn . "${S}/src/import/vendor/src"
-	mkdir -p "${S}/src/import/vendor/src/github.com/jessfraz/riddler"
-	ln -sfn "${S}/src/import/parse" "${S}/src/import/vendor/src/github.com/jessfraz/riddler/parse"
-	export GOPATH="${S}/src/import/vendor"
-
-	# Pass the needed cflags/ldflags so that cgo
-	# can find the needed headers files and libraries
-	export CGO_ENABLED="1"
-	export CFLAGS=""
-	export LDFLAGS=""
-	export CGO_CFLAGS="${BUILDSDK_CFLAGS} --sysroot=${STAGING_DIR_TARGET}"
-	export CGO_LDFLAGS="${BUILDSDK_LDFLAGS} --sysroot=${STAGING_DIR_TARGET}"
-	cd ${S}/src/import
-
-	oe_runmake static
-}
-
-do_install() {
-	install -d ${D}/${sbindir}
-	install ${S}/src/import/riddler ${D}/${sbindir}/riddler
-}
diff --git a/import-layers/meta-virtualization/recipes-containers/runc/runc-docker/0001-build-drop-recvtty-and-use-GOBUILDFLAGS.patch b/import-layers/meta-virtualization/recipes-containers/runc/runc-docker/0001-build-drop-recvtty-and-use-GOBUILDFLAGS.patch
deleted file mode 100644
index f885aaf..0000000
--- a/import-layers/meta-virtualization/recipes-containers/runc/runc-docker/0001-build-drop-recvtty-and-use-GOBUILDFLAGS.patch
+++ /dev/null
@@ -1,27 +0,0 @@
-From a9a2b9e72027d0b2357f6dfe8b154762aaa8dd02 Mon Sep 17 00:00:00 2001
-From: Bruce Ashfield <bruce.ashfield@windriver.com>
-Date: Thu, 19 Apr 2018 16:39:41 -0400
-Subject: [PATCH] build: drop recvtty and use GOBUILDFLAGS
-
-Signed-off-by: Bruce Ashfield <bruce.ashfield@windriver.com>
----
- Makefile | 3 +--
- 1 file changed, 1 insertion(+), 2 deletions(-)
-
-diff --git a/src/import/Makefile b/src/import/Makefile
-index c6de11d..0e9bddb 100644
---- a/src/import/Makefile
-+++ b/src/import/Makefile
-@@ -39,8 +39,7 @@ contrib/cmd/recvtty/recvtty: $(SOURCES)
- 	$(GO) build -buildmode=pie $(EXTRA_FLAGS) -ldflags "-X main.gitCommit=${COMMIT} -X main.version=${VERSION} $(EXTRA_LDFLAGS)" -tags "$(BUILDTAGS)" -o contrib/cmd/recvtty/recvtty ./contrib/cmd/recvtty
- 
- static: $(SOURCES)
--	CGO_ENABLED=1 $(GO) build $(EXTRA_FLAGS) -tags "$(BUILDTAGS) netgo cgo static_build" -installsuffix netgo -ldflags "-w -extldflags -static -X main.gitCommit=${COMMIT} -X main.version=${VERSION} $(EXTRA_LDFLAGS)" -o runc .
--	CGO_ENABLED=1 $(GO) build $(EXTRA_FLAGS) -tags "$(BUILDTAGS) netgo cgo static_build" -installsuffix netgo -ldflags "-w -extldflags -static -X main.gitCommit=${COMMIT} -X main.version=${VERSION} $(EXTRA_LDFLAGS)" -o contrib/cmd/recvtty/recvtty ./contrib/cmd/recvtty
-+	CGO_ENABLED=1 $(GO) build -tags "$(BUILDTAGS) netgo cgo static_build" -installsuffix netgo -ldflags "-w -extldflags -static -X main.gitCommit=${COMMIT} -X main.version=${VERSION} $(EXTRA_LDFLAGS)" $(GOBUILDFLAGS) -o runc .
- 
- release:
- 	script/release.sh -r release/$(VERSION) -v $(VERSION)
--- 
-2.7.4
-
diff --git a/import-layers/meta-virtualization/recipes-containers/runc/runc-docker/0001-runc-Add-console-socket-dev-null.patch b/import-layers/meta-virtualization/recipes-containers/runc/runc-docker/0001-runc-Add-console-socket-dev-null.patch
deleted file mode 100644
index 48c1250..0000000
--- a/import-layers/meta-virtualization/recipes-containers/runc/runc-docker/0001-runc-Add-console-socket-dev-null.patch
+++ /dev/null
@@ -1,33 +0,0 @@
-From 3fff2a3505fba1d1ff0074edff15708a77f6cfa9 Mon Sep 17 00:00:00 2001
-From: Jason Wessel <jason.wessel@windriver.com>
-Date: Wed, 12 Jul 2017 13:35:03 -0700
-Subject: [PATCH] runc: Add --console-socket=/dev/null
-
-This allows for setting up a detached session where you do not want to
-set the terminal to false in the config.json.  More or less this is a
-runtime override.
-
-Signed-off-by: Jason Wessel <jason.wessel@windriver.com>
----
- utils_linux.go | 5 +++++
- 1 file changed, 5 insertions(+)
-
-diff --git a/utils_linux.go b/utils_linux.go
-index 8085f7fe..e6d31b35 100644
---- a/src/import/utils_linux.go
-+++ b/src/import/utils_linux.go
-@@ -227,6 +227,11 @@ type runner struct {
- }
- 
- func (r *runner) run(config *specs.Process) (int, error) {
-+	if (r.consoleSocket == "/dev/null") {
-+		r.detach = false
-+		r.consoleSocket = ""
-+		config.Terminal = false
-+	}
- 	if err := r.checkTerminal(config); err != nil {
- 		r.destroy()
- 		return -1, err
--- 
-2.11.0
-
diff --git a/import-layers/meta-virtualization/recipes-containers/runc/runc-docker/0001-runc-docker-SIGUSR1-daemonize.patch b/import-layers/meta-virtualization/recipes-containers/runc/runc-docker/0001-runc-docker-SIGUSR1-daemonize.patch
deleted file mode 100644
index 9ccbccb..0000000
--- a/import-layers/meta-virtualization/recipes-containers/runc/runc-docker/0001-runc-docker-SIGUSR1-daemonize.patch
+++ /dev/null
@@ -1,129 +0,0 @@
-From cd7d76a6d1ecb1856f6ed666fb5c30dc105aa94e Mon Sep 17 00:00:00 2001
-From: Jason Wessel <jason.wessel@windriver.com>
-Date: Tue, 5 Dec 2017 18:28:28 -0800
-Subject: [PATCH] runc-docker: Allow "run start ..." to daemonize with $SIGUSR1_PARENT_PID
-
-The runc-docker has all the code in it to properly run a stop hook if
-you use it in the foreground.  It doesn't work in the back ground
-because there is no way for a golang application to fork a child exit
-out of the parent process because all the golang threads stay with the
-parent.
-
-This patch has three parts that happen ONLY when $SIGUSR1_PARENT_PID
-is set.
-
-1) The code was copied which performs the normal the signal handling
-   block which is used for the foreground operation of runc.
-
-2) At the point where runc start would normally exit, it closes
-   stdin/stdout/stderr so it would be possible to daemonize "runc start ...".
-
-3) The code to send a SIGUSR1 to the parent process was added.  The
-   idea being that a parent process would simply exit at that point
-   because it was blocking until runc performed everything it was
-   required to perform.
-
-Signed-off-by: Jason Wessel <jason.wessel@windriver.com>
----
- signals.go     | 54 ++++++++++++++++++++++++++++++++++++++++++++++++++----
- utils_linux.go |  2 +-
- 2 files changed, 51 insertions(+), 5 deletions(-)
-
-Index: git/src/import/signals.go
-===================================================================
---- git.orig/src/import/signals.go
-+++ git/src/import/signals.go
-@@ -6,6 +6,7 @@
- 	"os"
- 	"os/signal"
- 	"syscall" // only for Signal
-+	"strconv"
- 
- 	"github.com/opencontainers/runc/libcontainer"
- 	"github.com/opencontainers/runc/libcontainer/system"
-@@ -56,9 +57,6 @@
- func (h *signalHandler) forward(process *libcontainer.Process, tty *tty, detach bool) (int, error) {
- 	// make sure we know the pid of our main process so that we can return
- 	// after it dies.
--	if detach && h.notifySocket == nil {
--		return 0, nil
--	}
- 
- 	pid1, err := process.Pid()
- 	if err != nil {
-@@ -68,12 +66,61 @@
- 	if h.notifySocket != nil {
- 		if detach {
- 			h.notifySocket.run(pid1)
--			return 0, nil
- 		} else {
- 			go h.notifySocket.run(0)
- 		}
- 	}
- 
-+	if (detach) {
-+		// This allows the parent process to daemonize this process
-+		// so long as stdin/stderr/stdout are closed
-+		if envVal := os.Getenv("SIGUSR1_PARENT_PID"); envVal != "" {
-+			// Close stdin/stdout/stderr
-+			os.Stdin.Close()
-+			os.Stdout.Close()
-+			os.Stderr.Close()
-+			// Notify parent to detach
-+			i, err := strconv.Atoi(envVal)
-+			if (err != nil) {
-+				return 0, nil
-+			}
-+			unix.Kill(i, unix.SIGUSR1)
-+			// Loop waiting on the child to signal or exit,
-+			// after which all stop hooks will be run
-+			for s := range h.signals {
-+				switch s {
-+				case unix.SIGCHLD:
-+					exits, err := h.reap()
-+					if err != nil {
-+						logrus.Error(err)
-+					}
-+					for _, e := range exits {
-+						logrus.WithFields(logrus.Fields{
-+							"pid":    e.pid,
-+							"status": e.status,
-+						}).Debug("process exited")
-+						if e.pid == pid1 {
-+							// call Wait() on the process even though we already have the exit
-+							// status because we must ensure that any of the go specific process
-+							// fun such as flushing pipes are complete before we return.
-+							process.Wait()
-+							if h.notifySocket != nil {
-+								h.notifySocket.Close()
-+							}
-+							return e.status, nil
-+						}
-+					}
-+				default:
-+					logrus.Debugf("sending signal to process %s", s)
-+					if err := unix.Kill(pid1, s.(syscall.Signal)); err != nil {
-+						logrus.Error(err)
-+					}
-+				}
-+			}
-+		}
-+		return 0, nil
-+	}
-+
- 	// Perform the initial tty resize. Always ignore errors resizing because
- 	// stdout might have disappeared (due to races with when SIGHUP is sent).
- 	_ = tty.resize()
-Index: git/src/import/utils_linux.go
-===================================================================
---- git.orig/src/import/utils_linux.go
-+++ git/src/import/utils_linux.go
-@@ -338,7 +338,7 @@
- 	if err != nil {
- 		r.terminate(process)
- 	}
--	if detach {
-+	if (detach && os.Getenv("SIGUSR1_PARENT_PID") == "") {
- 		return 0, nil
- 	}
- 	r.destroy()
diff --git a/import-layers/meta-virtualization/recipes-containers/runc/runc-docker_git.bb b/import-layers/meta-virtualization/recipes-containers/runc/runc-docker_git.bb
deleted file mode 100644
index 81e5a5d..0000000
--- a/import-layers/meta-virtualization/recipes-containers/runc/runc-docker_git.bb
+++ /dev/null
@@ -1,12 +0,0 @@
-include runc.inc
-
-# Note: this rev is before the required protocol field, update when all components
-#       have been updated to match.
-SRCREV_runc-docker = "4fc53a81fb7c994640722ac585fa9ca548971871"
-SRC_URI = "git://github.com/opencontainers/runc;nobranch=1;name=runc-docker \
-           file://0001-runc-Add-console-socket-dev-null.patch \
-           file://0001-build-drop-recvtty-and-use-GOBUILDFLAGS.patch \
-           file://0001-runc-docker-SIGUSR1-daemonize.patch \
-          "
-
-RUNC_VERSION = "1.0.0-rc5"
diff --git a/import-layers/meta-virtualization/recipes-containers/runc/runc-opencontainers_git.bb b/import-layers/meta-virtualization/recipes-containers/runc/runc-opencontainers_git.bb
deleted file mode 100644
index ed48abf..0000000
--- a/import-layers/meta-virtualization/recipes-containers/runc/runc-opencontainers_git.bb
+++ /dev/null
@@ -1,7 +0,0 @@
-include runc.inc
-
-SRCREV = "58415b4b12650291f435db8770cea48207b78afe"
-SRC_URI = " \
-    git://github.com/opencontainers/runc;branch=master \
-    "
-RUNC_VERSION = "1.0.0-rc5"
diff --git a/import-layers/meta-virtualization/recipes-containers/runc/runc.inc b/import-layers/meta-virtualization/recipes-containers/runc/runc.inc
deleted file mode 100644
index 9199cef..0000000
--- a/import-layers/meta-virtualization/recipes-containers/runc/runc.inc
+++ /dev/null
@@ -1,64 +0,0 @@
-HOMEPAGE = "https://github.com/opencontainers/runc"
-SUMMARY = "runc container cli tools"
-DESCRIPTION = "runc is a CLI tool for spawning and running containers according to the OCI specification."
-
-# Apache-2.0 for containerd
-LICENSE = "Apache-2.0"
-LIC_FILES_CHKSUM = "file://src/import/LICENSE;md5=435b266b3899aa8a959f17d41c56def8"
-
-S = "${WORKDIR}/git"
-
-PV = "${RUNC_VERSION}+git${SRCPV}"
-
-inherit go
-inherit goarch
-
-RRECOMMENDS_${PN} = "lxc docker"
-PROVIDES += "virtual/runc"
-RPROVIDES_${PN} = "virtual/runc"
-
-GO_IMPORT = "import"
-
-LIBCONTAINER_PACKAGE="github.com/opencontainers/runc/libcontainer"
-
-do_configure[noexec] = "1"
-EXTRA_OEMAKE="BUILDTAGS='' GO=${GO}"
-
-do_compile() {
-	# Set GOPATH. See 'PACKAGERS.md'. Don't rely on
-	# docker to download its dependencies but rather
-	# use dependencies packaged independently.
-	cd ${S}/src/import
-	rm -rf .gopath
-	dname=`dirname "${LIBCONTAINER_PACKAGE}"`
-	bname=`basename "${LIBCONTAINER_PACKAGE}"`
-	mkdir -p .gopath/src/${dname}
-
-	(cd .gopath/src/${dname}; ln -sf ../../../../../${bname} ${bname})
-	export GOPATH="${S}/src/import/.gopath:${S}/src/import/vendor:${STAGING_DIR_TARGET}/${prefix}/local/go"
-
-	# Fix up symlink for go-cross compiler
-	rm -f ${S}/src/import/vendor/src
-	ln -sf ./ ${S}/src/import/vendor/src
-
-	# Pass the needed cflags/ldflags so that cgo
-	# can find the needed headers files and libraries
-	export CGO_ENABLED="1"
-	export CGO_CFLAGS="${CFLAGS} --sysroot=${STAGING_DIR_TARGET}"
-	export CGO_LDFLAGS="${LDFLAGS} --sysroot=${STAGING_DIR_TARGET}"
-	export GO=${GO}
-
-	export CFLAGS=""
-	export LDFLAGS=""
-
-	oe_runmake static
-}
-
-do_install() {
-	mkdir -p ${D}/${bindir}
-
-	cp ${S}/src/import/runc ${D}/${bindir}/runc
-	ln -sf runc ${D}/${bindir}/docker-runc
-}
-
-INHIBIT_PACKAGE_STRIP = "1"
diff --git a/import-layers/meta-virtualization/recipes-containers/singularity/README b/import-layers/meta-virtualization/recipes-containers/singularity/README
deleted file mode 100644
index 582480f..0000000
--- a/import-layers/meta-virtualization/recipes-containers/singularity/README
+++ /dev/null
@@ -1,46 +0,0 @@
-Singularity is a container platform based on the principle of mobility of 
-compute, and it is designed for use within HPC clusters. For more info see
-singularity.lbl.gov.  
-
-To test whether the software functions correctly, you can use `singularity
-selftest`. This is what you would expect to see:
-
-~# singularity selftest
- + sh -c test -f /etc/singularity/singularity.conf                                     (retval=0) OK
- + test -u /usr/libexec/singularity/bin/action-suid                                    (retval=0) OK
- + test -u /usr/libexec/singularity/bin/create-suid                                    (retval=0) OK
- + test -u /usr/libexec/singularity/bin/expand-suid                                    (retval=0) OK
- + test -u /usr/libexec/singularity/bin/export-suid                                    (retval=0) OK
- + test -u /usr/libexec/singularity/bin/import-suid                                    (retval=0) OK
- + test -u /usr/libexec/singularity/bin/mount-suid                                     (retval=0) OK
-
-You can also pull a container from Docker Hub to prove full functionality
-(Test was performed on a Raspberry Pi 3, hence the arm32v7 part of the Docker
-link. Make sure you pull an image which is compatible with your hardware.) 
-For instance:
-
-~# singularity pull docker://arm32v7/debian:latest
-Initializing Singularity image subsystem
-Opening image file: debian-latest.img
-Creating 200MiB image
-Binding image to loop
-Creating file system within image
-Image is done: debian-latest.img
-Docker image path: index.docker.io/arm32v7/debian:latest
-Cache folder set to /home/root/.singularity/docker
-[1/1] |===================================| 100.0% 
-Importing: base Singularity environment
-Importing: /home/root/.singularity/docker/sha256:ed4f1f0d0a0457e7f76ffb25a8d6a193007709dd312b7647cb44fc6979ec4a53.tar.gz
-Importing: /home/root/.singularity/metadata/sha256:89997b2c16b29c5a3a316e314172ef21b36f67cc3200b1c4d95927f716dbee83.tar.gz
-Done. Container is at: debian-latest.img
-~# singularity shell debian-latest.img 
-Singularity: Invoking an interactive shell within container...
-
-Singularity debian-latest.img:~> echo "Hello from within the container!"
-Hello from within the container!
-Singularity debian-latest.img:~> ls /
-bin   dev  home  lost+found  mnt  proc	run   singularity  sys	usr
-boot  etc  lib	 media	     opt  root	sbin  srv	   tmp	var
-Singularity debian-latest.img:~> exit
-exit
-~# 
diff --git a/import-layers/meta-virtualization/recipes-containers/singularity/singularity_git.bb b/import-layers/meta-virtualization/recipes-containers/singularity/singularity_git.bb
deleted file mode 100644
index 6fee8f3..0000000
--- a/import-layers/meta-virtualization/recipes-containers/singularity/singularity_git.bb
+++ /dev/null
@@ -1,35 +0,0 @@
-# Skip QA check for library symbolic links (core issue is a packaging problem within 
-# Singularity build / config: read up on the dev-so test for more info)
-INSANE_SKIP_${PN} += "dev-so"
-
-RDEPENDS_${PN} += "glibc python3 ca-certificates openssl bash e2fsprogs-mke2fs"
-# Singularity expects to find python3 under the name python, therefore both
-# cannot be installed at the same time.
-RCONFLICTS_${PN} = "python"
-
-LICENSE = "BSD"
-LIC_FILES_CHKSUM = "file://COPYRIGHT.md;md5=be78c34e483dd7d8439358b1e024b294 \
-                    file://LICENSE-LBNL.md;md5=45a007b527e1a9507aa7fa869f8d7ede \
-                    file://LICENSE.md;md5=df4326b473db6424033f1d98a5645e30 \
-                    file://debian/copyright;md5=ed267cf386d9b75ab1f27f407e935b10"
-
-SRC_URI = "git://github.com/singularityware/singularity.git;protocol=https"
-PV = "2.3.1+git${SRCPV}"
-SRCREV = "e214d4ebf0a1274b1c63b095fd55ae61c7e92947"
-
-S = "${WORKDIR}/git"
-
-inherit pythonnative autotools-brokensep
-EXTRA_OECONF = "--prefix=/usr/local"
-
-pkg_postinst_${PN}() {
-    # Singularity requires "python" to resolve to "python3" within the commandline.
-    # This creates a symbolic link from python3 to python. A side-effect of this is
-    # that scripts which expect Python 2 may fail to run correctly.
-    ln -sr $D${bindir}/python3 $D${bindir}/python 
-
-    # python3 expects CA certificates to be installed in a different place to where
-    # they are actually installed. These lines link the two locations.
-    rm -r $D${libdir}/ssl-1.1/certs
-    ln -sr $D${sysconfdir}/ssl/certs $D${libdir}/ssl-1.1 
-}
diff --git a/import-layers/meta-virtualization/recipes-core/busybox/busybox/getopt.cfg b/import-layers/meta-virtualization/recipes-core/busybox/busybox/getopt.cfg
deleted file mode 100644
index 8dcd350..0000000
--- a/import-layers/meta-virtualization/recipes-core/busybox/busybox/getopt.cfg
+++ /dev/null
@@ -1,2 +0,0 @@
-CONFIG_GETOPT=y
-CONFIG_FEATURE_GETOPT_LONG=y
diff --git a/import-layers/meta-virtualization/recipes-core/busybox/busybox/lspci.cfg b/import-layers/meta-virtualization/recipes-core/busybox/busybox/lspci.cfg
deleted file mode 100644
index 6458af8..0000000
--- a/import-layers/meta-virtualization/recipes-core/busybox/busybox/lspci.cfg
+++ /dev/null
@@ -1 +0,0 @@
-CONFIG_LSPCI=y
diff --git a/import-layers/meta-virtualization/recipes-core/busybox/busybox/lsusb.cfg b/import-layers/meta-virtualization/recipes-core/busybox/busybox/lsusb.cfg
deleted file mode 100644
index 2aba6ef..0000000
--- a/import-layers/meta-virtualization/recipes-core/busybox/busybox/lsusb.cfg
+++ /dev/null
@@ -1 +0,0 @@
-CONFIG_LSUSB=y
diff --git a/import-layers/meta-virtualization/recipes-core/busybox/busybox/mdev.cfg b/import-layers/meta-virtualization/recipes-core/busybox/busybox/mdev.cfg
deleted file mode 100644
index f8d6da8..0000000
--- a/import-layers/meta-virtualization/recipes-core/busybox/busybox/mdev.cfg
+++ /dev/null
@@ -1,6 +0,0 @@
-CONFIG_MDEV=y
-CONFIG_FEATURE_MDEV_CONF=y
-CONFIG_FEATURE_MDEV_RENAME=y
-CONFIG_FEATURE_MDEV_RENAME_REGEXP=y
-CONFIG_FEATURE_MDEV_EXEC=y
-CONFIG_FEATURE_MDEV_LOAD_FIRMWARE=y
diff --git a/import-layers/meta-virtualization/recipes-core/busybox/busybox/mount-cifs.cfg b/import-layers/meta-virtualization/recipes-core/busybox/busybox/mount-cifs.cfg
deleted file mode 100644
index 88f0404..0000000
--- a/import-layers/meta-virtualization/recipes-core/busybox/busybox/mount-cifs.cfg
+++ /dev/null
@@ -1 +0,0 @@
-CONFIG_FEATURE_MOUNT_CIFS=y
diff --git a/import-layers/meta-virtualization/recipes-core/busybox/busybox/ps-extras.cfg b/import-layers/meta-virtualization/recipes-core/busybox/busybox/ps-extras.cfg
deleted file mode 100644
index 7434635..0000000
--- a/import-layers/meta-virtualization/recipes-core/busybox/busybox/ps-extras.cfg
+++ /dev/null
@@ -1,3 +0,0 @@
-CONFIG_DESKTOP=y
-CONFIG_FEATURE_PS_TIME=y
-CONFIG_FEATURE_PS_ADDITIONAL_COLUMNS=y
diff --git a/import-layers/meta-virtualization/recipes-core/busybox/busybox_%.bbappend b/import-layers/meta-virtualization/recipes-core/busybox/busybox_%.bbappend
deleted file mode 100644
index 617cacc..0000000
--- a/import-layers/meta-virtualization/recipes-core/busybox/busybox_%.bbappend
+++ /dev/null
@@ -1 +0,0 @@
-require ${@bb.utils.contains('DISTRO_FEATURES', 'virtualization', '${BPN}_virtualization.inc', '', d)}
diff --git a/import-layers/meta-virtualization/recipes-core/busybox/busybox_virtualization.inc b/import-layers/meta-virtualization/recipes-core/busybox/busybox_virtualization.inc
deleted file mode 100644
index d9c4e67..0000000
--- a/import-layers/meta-virtualization/recipes-core/busybox/busybox_virtualization.inc
+++ /dev/null
@@ -1,10 +0,0 @@
-FILESEXTRAPATHS_prepend := "${THISDIR}/busybox:"
-
-SRC_URI += " \
-	    file://lspci.cfg \
-	    file://lsusb.cfg \
-	    file://mdev.cfg \
-	    file://mount-cifs.cfg \
-	    file://ps-extras.cfg \
-	    file://getopt.cfg \
-           "
diff --git a/import-layers/meta-virtualization/recipes-core/initscripts/initscripts_1.%.bbappend b/import-layers/meta-virtualization/recipes-core/initscripts/initscripts_1.%.bbappend
deleted file mode 100644
index 0600ab2..0000000
--- a/import-layers/meta-virtualization/recipes-core/initscripts/initscripts_1.%.bbappend
+++ /dev/null
@@ -1,16 +0,0 @@
-do_install_append() {
-
-	echo                  >> ${D}${sysconfdir}/init.d/functions
-	echo success \(\) \{  >> ${D}${sysconfdir}/init.d/functions
-	echo \ \ \ \ echo \$* >> ${D}${sysconfdir}/init.d/functions
-	echo \}               >> ${D}${sysconfdir}/init.d/functions
-	echo failure \(\) \{  >> ${D}${sysconfdir}/init.d/functions
-	echo \ \ \ \ echo \$* >> ${D}${sysconfdir}/init.d/functions
-	echo \}               >> ${D}${sysconfdir}/init.d/functions
-	echo warning \(\) \{  >> ${D}${sysconfdir}/init.d/functions
-	echo \ \ \ \ echo \$* >> ${D}${sysconfdir}/init.d/functions
-	echo \}               >> ${D}${sysconfdir}/init.d/functions
-	echo begin \(\) \{  >> ${D}${sysconfdir}/init.d/functions
-	echo \ \ \ \ echo \$* >> ${D}${sysconfdir}/init.d/functions
-	echo \}               >> ${D}${sysconfdir}/init.d/functions
-}
diff --git a/import-layers/meta-virtualization/recipes-core/runv/runv_git.bb b/import-layers/meta-virtualization/recipes-core/runv/runv_git.bb
deleted file mode 100644
index 0301dd2..0000000
--- a/import-layers/meta-virtualization/recipes-core/runv/runv_git.bb
+++ /dev/null
@@ -1,82 +0,0 @@
-HOMEPAGE = "https://github.com/hyperhq/runv"
-SUMMARY = "Hypervisor-based Runtime for OCI"
-DESCRIPTION = "Hypervisor-based Runtime for OCI"
-
-SRCREV_runv = "b360a686abc6c6e896382990ef1b93ef07c7a677"
-SRC_URI = "\
-	git://github.com/hyperhq/runv.git;nobranch=1;name=runv \
-	"
-
-LICENSE = "Apache-2.0"
-LIC_FILES_CHKSUM = "file://src/import/LICENSE;md5=4106a50540bdec3b9734f9c70882d382"
-
-GO_IMPORT = "import"
-
-PV = "0.4.0+git${SRCREV_runv}"
-
-inherit go
-inherit goarch
-inherit pkgconfig
-inherit autotools-brokensep
-
-PACKAGECONFIG[xen] = "--with-xen,--without-xen,"
-AUTOTOOLS_SCRIPT_PATH = "${S}/src/import/"
-
-RDEPENDS_${PN} += " qemu hyperstart"
-
-do_compile() {
-	export GOARCH="${TARGET_GOARCH}"
-	export GOROOT="${STAGING_LIBDIR_NATIVE}/${TARGET_SYS}/go"
-	export GOPATH="${S}/src/import:${S}/src/import/vendor"
-
-	# Pass the needed cflags/ldflags so that cgo
-	# can find the needed headers files and libraries
-	export CGO_ENABLED="1"
-	export CFLAGS=""
-	export LDFLAGS=""
-	export CGO_CFLAGS="${BUILDSDK_CFLAGS} --sysroot=${STAGING_DIR_TARGET}"
-	export CGO_LDFLAGS="${BUILDSDK_LDFLAGS} --sysroot=${STAGING_DIR_TARGET}"
-
-	# link fixups for compilation
-	rm -f ${S}/src/import/vendor/src
-	ln -sf ./ ${S}/src/import/vendor/src
-
-	mkdir -p ${S}/src/import/vendor/github.com/hyperhq/runv
-
-	echo fff
-	pwd
-	ln -sf src/import/cli
-	ln -sf ../../../../api ${S}/src/import/vendor/github.com/hyperhq/runv/api
-	ln -sf ../../../../cli ${S}/src/import/vendor/github.com/hyperhq/runv/cli
-	ln -sf ../../../../lib ${S}/src/import/vendor/github.com/hyperhq/runv/lib
-	ln -sf ../../../../driverloader ${S}/src/import/vendor/github.com/hyperhq/runv/driverloader
-	ln -sf ../../../../factory ${S}/src/import/vendor/github.com/hyperhq/runv/factory
-	ln -sf ../../../../hyperstart ${S}/src/import/vendor/github.com/hyperhq/runv/hyperstart
-	ln -sf ../../../../hypervisor ${S}/src/import/vendor/github.com/hyperhq/runv/hypervisor
-	ln -sf ../../../../template ${S}/src/import/vendor/github.com/hyperhq/runv/template
-
-	export GOPATH="${S}/src/import/.gopath:${S}/src/import/vendor:${STAGING_DIR_TARGET}/${prefix}/local/go"
-	export GOROOT="${STAGING_DIR_NATIVE}/${nonarch_libdir}/${HOST_SYS}/go"
-
-	# Pass the needed cflags/ldflags so that cgo
-	# can find the needed headers files and libraries
-	export CGO_ENABLED="1"
-	export CGO_CFLAGS="${CFLAGS} --sysroot=${STAGING_DIR_TARGET}"
-	export CGO_LDFLAGS="${LDFLAGS} --sysroot=${STAGING_DIR_TARGET}"
-
-	oe_runmake build-runv
-}
-
-do_install() {
-    localbindir="/usr/local/bin"
-
-    install -d ${D}${localbindir}
-    install -m 755 ${S}/runv ${D}/${localbindir}
-}
-
-deltask compile_ptest_base
-
-FILES_${PN} += "/usr/local/bin/*"
-
-INHIBIT_PACKAGE_STRIP = "1"
-INSANE_SKIP_${PN} += "ldflags already-stripped"
diff --git a/import-layers/meta-virtualization/recipes-core/sysvinit/sysvinit-inittab_2.%.bbappend b/import-layers/meta-virtualization/recipes-core/sysvinit/sysvinit-inittab_2.%.bbappend
deleted file mode 100644
index 8c08832..0000000
--- a/import-layers/meta-virtualization/recipes-core/sysvinit/sysvinit-inittab_2.%.bbappend
+++ /dev/null
@@ -1 +0,0 @@
-require ${@bb.utils.contains('DISTRO_FEATURES', 'xen', 'sysvinit-inittab_xen.inc', '', d)}
diff --git a/import-layers/meta-virtualization/recipes-core/sysvinit/sysvinit-inittab_xen.inc b/import-layers/meta-virtualization/recipes-core/sysvinit/sysvinit-inittab_xen.inc
deleted file mode 100644
index 9d0589c..0000000
--- a/import-layers/meta-virtualization/recipes-core/sysvinit/sysvinit-inittab_xen.inc
+++ /dev/null
@@ -1,4 +0,0 @@
-do_install_append() {
-                echo "" >> ${D}${sysconfdir}/inittab
-                echo "X0:12345:respawn:/sbin/getty 115200 hvc0" >> ${D}${sysconfdir}/inittab
-}
diff --git a/import-layers/meta-virtualization/recipes-devtools/go/compose-file_git.bb b/import-layers/meta-virtualization/recipes-devtools/go/compose-file_git.bb
deleted file mode 100644
index bcf8c3d..0000000
--- a/import-layers/meta-virtualization/recipes-devtools/go/compose-file_git.bb
+++ /dev/null
@@ -1,41 +0,0 @@
-DESCRIPTION = "Parser for the Compose file format (version 3)"
-HOMEPAGE = "https://github.com/aanand/compose-file"
-SECTION = "devel/go"
-LICENSE = "Apache-2.0"
-LIC_FILES_CHKSUM = "file://src/${PKG_NAME}/LICENSE;md5=9cd86830b557232ce55e2a6b47387471"
-
-SRCNAME = "compose-file"
-
-PKG_NAME = "github.com/aanand/${SRCNAME}"
-SRC_URI = "git://${PKG_NAME}.git;destsuffix=git/src/${PKG_NAME}"
-
-SRCREV = "a3e58764f50597b6217fec07e9bff7225c4a1719"
-PV = "3.0+git${SRCPV}"
-
-S = "${WORKDIR}/git"
-
-# NO-OP the do compile rule because this recipe is source only.
-do_compile() {
-}
-
-do_install() {
-	install -d ${D}${prefix}/local/go/src/${PKG_NAME}
-	for j in $(cd ${S} && find src/${PKG_NAME} -name "*.go"); do
-	    if [ ! -d ${D}${prefix}/local/go/$(dirname $j) ]; then
-	        mkdir -p ${D}${prefix}/local/go/$(dirname $j)
-	    fi
-	    cp $j ${D}${prefix}/local/go/$j
-	done
-	cp -r ${S}/src/${PKG_NAME}/LICENSE ${D}${prefix}/local/go/src/${PKG_NAME}/
-}
-
-SYSROOT_PREPROCESS_FUNCS += "go_compose_file_sysroot_preprocess"
-
-go_compose_file_sysroot_preprocess () {
-    install -d ${SYSROOT_DESTDIR}${prefix}/local/go/src/${PKG_NAME}
-    cp -r ${D}${prefix}/local/go/src/${PKG_NAME} ${SYSROOT_DESTDIR}${prefix}/local/go/src/$(dirname ${PKG_NAME})
-}
-
-FILES_${PN} += "${prefix}/local/go/src/${PKG_NAME}/*"
-
-CLEANBROKEN = "1"
\ No newline at end of file
diff --git a/import-layers/meta-virtualization/recipes-devtools/go/go-capability_git.bb b/import-layers/meta-virtualization/recipes-devtools/go/go-capability_git.bb
deleted file mode 100644
index 8524af6..0000000
--- a/import-layers/meta-virtualization/recipes-devtools/go/go-capability_git.bb
+++ /dev/null
@@ -1,29 +0,0 @@
-DESCRIPTION = "Utilities for manipulating POSIX capabilities in Go."
-HOMEPAGE = "https://github.com/syndtr/gocapability"
-SECTION = "devel/go"
-LICENSE = "BSD-2-Clause"
-LIC_FILES_CHKSUM = "file://LICENSE;md5=a7304f5073e7be4ba7bffabbf9f2bbca"
-
-SRCNAME = "gocapability"
-
-PKG_NAME = "github.com/syndtr/${SRCNAME}"
-SRC_URI = "git://${PKG_NAME}.git"
-
-SRCREV = "2c00daeb6c3b45114c80ac44119e7b8801fdd852"
-PV = "0.0+git${SRCPV}"
-
-S = "${WORKDIR}/git"
-
-do_install() {
-	install -d ${D}${prefix}/local/go/src/${PKG_NAME}
-	cp -r ${S}/* ${D}${prefix}/local/go/src/${PKG_NAME}/
-}
-
-SYSROOT_PREPROCESS_FUNCS += "go_capability_sysroot_preprocess"
-
-go_capability_sysroot_preprocess () {
-    install -d ${SYSROOT_DESTDIR}${prefix}/local/go/src/${PKG_NAME}
-    cp -r ${D}${prefix}/local/go/src/${PKG_NAME} ${SYSROOT_DESTDIR}${prefix}/local/go/src/$(dirname ${PKG_NAME})
-}
-
-FILES_${PN} += "${prefix}/local/go/src/${PKG_NAME}/*"
diff --git a/import-layers/meta-virtualization/recipes-devtools/go/go-cli_git.bb b/import-layers/meta-virtualization/recipes-devtools/go/go-cli_git.bb
deleted file mode 100644
index 21d01ac..0000000
--- a/import-layers/meta-virtualization/recipes-devtools/go/go-cli_git.bb
+++ /dev/null
@@ -1,29 +0,0 @@
-DESCRIPTION = "A small package for building command line apps in Go"
-HOMEPAGE = "https://github.com/codegangsta/cli"
-SECTION = "devel/go"
-LICENSE = "MIT"
-LIC_FILES_CHKSUM = "file://LICENSE;md5=ed9b539ed65d73926f30ff1f1587dc44"
-
-SRCNAME = "cli"
-
-PKG_NAME = "github.com/codegangsta/${SRCNAME}"
-SRC_URI = "git://${PKG_NAME}.git"
-
-SRCREV = "27ecc97192df1bf053a22b04463f2b51b8b8373e"
-PV = "1.1.0+git${SRCREV}"
-
-S = "${WORKDIR}/git"
-
-do_install() {
-	install -d ${D}${prefix}/local/go/src/${PKG_NAME}
-	cp -r ${S}/* ${D}${prefix}/local/go/src/${PKG_NAME}/
-}
-
-SYSROOT_PREPROCESS_FUNCS += "go_cli_sysroot_preprocess"
-
-go_cli_sysroot_preprocess () {
-    install -d ${SYSROOT_DESTDIR}${prefix}/local/go/src/${PKG_NAME}
-    cp -r ${D}${prefix}/local/go/src/${PKG_NAME} ${SYSROOT_DESTDIR}${prefix}/local/go/src/$(dirname ${PKG_NAME})
-}
-
-FILES_${PN} += "${prefix}/local/go/src/${PKG_NAME}/*"
diff --git a/import-layers/meta-virtualization/recipes-devtools/go/go-connections_git.bb b/import-layers/meta-virtualization/recipes-devtools/go/go-connections_git.bb
deleted file mode 100644
index 5d071b0..0000000
--- a/import-layers/meta-virtualization/recipes-devtools/go/go-connections_git.bb
+++ /dev/null
@@ -1,39 +0,0 @@
-DESCRIPTION = "Utility package to work with network connections"
-HOMEPAGE = "https://github.com/docker/connections"
-SECTION = "devel/go"
-LICENSE = "Apache-2.0"
-LIC_FILES_CHKSUM = "file://src/${PKG_NAME}/LICENSE;md5=04424bc6f5a5be60691b9824d65c2ad8"
-
-SRCNAME = "go-connections"
-
-PKG_NAME = "github.com/docker/${SRCNAME}"
-SRC_URI = "git://${PKG_NAME}.git;destsuffix=git/src/${PKG_NAME}"
-
-SRCREV = "4ccf312bf1d35e5dbda654e57a9be4c3f3cd0366"
-PV = "0.2.1+git${SRCPV}"
-
-S = "${WORKDIR}/git"
-
-# NO-OP the do compile rule because this recipe is source only.
-do_compile() {
-}
-
-do_install() {
-	install -d ${D}${prefix}/local/go/src/${PKG_NAME}
-	for j in $(cd ${S} && find src/${PKG_NAME} -name "*.go"); do
-	    if [ ! -d ${D}${prefix}/local/go/$(dirname $j) ]; then
-	        mkdir -p ${D}${prefix}/local/go/$(dirname $j)
-	    fi
-	    cp $j ${D}${prefix}/local/go/$j
-	done
-	cp -r ${S}/src/${PKG_NAME}/LICENSE ${D}${prefix}/local/go/src/${PKG_NAME}/
-}
-
-SYSROOT_PREPROCESS_FUNCS += "go_connections_sysroot_preprocess"
-
-go_connections_sysroot_preprocess () {
-    install -d ${SYSROOT_DESTDIR}${prefix}/local/go/src/${PKG_NAME}
-    cp -r ${D}${prefix}/local/go/src/${PKG_NAME} ${SYSROOT_DESTDIR}${prefix}/local/go/src/$(dirname ${PKG_NAME})
-}
-
-FILES_${PN} += "${prefix}/local/go/src/${PKG_NAME}/*"
diff --git a/import-layers/meta-virtualization/recipes-devtools/go/go-context_git.bb b/import-layers/meta-virtualization/recipes-devtools/go/go-context_git.bb
deleted file mode 100644
index 15f6a8d..0000000
--- a/import-layers/meta-virtualization/recipes-devtools/go/go-context_git.bb
+++ /dev/null
@@ -1,28 +0,0 @@
-DESCRIPTION = "A golang registry for global request variables."
-HOMEPAGE = "https://github.com/gorilla/context"
-SECTION = "devel/go"
-LICENSE = "BSD-3-Clause"
-LIC_FILES_CHKSUM = "file://LICENSE;md5=c50f6bd9c1e15ed0bad3bea18e3c1b7f"
-
-SRCNAME = "context"
-
-PKG_NAME = "github.com/gorilla/${SRCNAME}"
-SRC_URI = "git://${PKG_NAME}.git"
-
-SRCREV = "14f550f51af52180c2eefed15e5fd18d63c0a64a"
-
-S = "${WORKDIR}/git"
-
-do_install() {
-	install -d ${D}${prefix}/local/go/src/${PKG_NAME}
-	cp -r ${S}/* ${D}${prefix}/local/go/src/${PKG_NAME}/
-}
-
-SYSROOT_PREPROCESS_FUNCS += "go_context_sysroot_preprocess"
-
-go_context_sysroot_preprocess () {
-    install -d ${SYSROOT_DESTDIR}${prefix}/local/go/src/${PKG_NAME}
-    cp -r ${D}${prefix}/local/go/src/${PKG_NAME} ${SYSROOT_DESTDIR}${prefix}/local/go/src/$(dirname ${PKG_NAME})
-}
-
-FILES_${PN} += "${prefix}/local/go/src/${PKG_NAME}/*"
diff --git a/import-layers/meta-virtualization/recipes-devtools/go/go-dbus_git.bb b/import-layers/meta-virtualization/recipes-devtools/go/go-dbus_git.bb
deleted file mode 100644
index 9b206a1..0000000
--- a/import-layers/meta-virtualization/recipes-devtools/go/go-dbus_git.bb
+++ /dev/null
@@ -1,29 +0,0 @@
-DESCRIPTION = "Native Go bindings for D-Bus"
-HOMEPAGE = "https://github.com/godbus/dbus"
-SECTION = "devel/go"
-LICENSE = "BSD-2-Clause"
-LIC_FILES_CHKSUM = "file://LICENSE;md5=09042bd5c6c96a2b9e45ddf1bc517eed"
-
-SRCNAME = "dbus"
-
-PKG_NAME = "github.com/godbus/${SRCNAME}"
-SRC_URI = "git://${PKG_NAME}.git"
-
-SRCREV = "5f6efc7ef2759c81b7ba876593971bfce311eab3"
-PV = "4.0.0+git${SRCREV}"
-
-S = "${WORKDIR}/git"
-
-do_install() {
-	install -d ${D}${prefix}/local/go/src/${PKG_NAME}
-	cp -r ${S}/* ${D}${prefix}/local/go/src/${PKG_NAME}/
-}
-
-SYSROOT_PREPROCESS_FUNCS += "go_dbus_sysroot_preprocess"
-
-go_dbus_sysroot_preprocess () {
-    install -d ${SYSROOT_DESTDIR}${prefix}/local/go/src/${PKG_NAME}
-    cp -r ${D}${prefix}/local/go/src/${PKG_NAME} ${SYSROOT_DESTDIR}${prefix}/local/go/src/$(dirname ${PKG_NAME})
-}
-
-FILES_${PN} += "${prefix}/local/go/src/${PKG_NAME}/*"
diff --git a/import-layers/meta-virtualization/recipes-devtools/go/go-distribution_git.bb b/import-layers/meta-virtualization/recipes-devtools/go/go-distribution_git.bb
deleted file mode 100644
index 9e3f209..0000000
--- a/import-layers/meta-virtualization/recipes-devtools/go/go-distribution_git.bb
+++ /dev/null
@@ -1,39 +0,0 @@
-DESCRIPTION = "The Docker toolset to pack, ship, store, and deliver content"
-HOMEPAGE = "https://github.com/docker/distribution"
-SECTION = "devel/go"
-LICENSE = "Apache-2.0"
-LIC_FILES_CHKSUM = "file://src/${PKG_NAME}/LICENSE;md5=d2794c0df5b907fdace235a619d80314"
-
-SRCNAME = "distribution"
-
-PKG_NAME = "github.com/docker/${SRCNAME}"
-SRC_URI = "git://${PKG_NAME}.git;branch=docker/1.13;destsuffix=git/src/${PKG_NAME}"
-
-SRCREV = "28602af35aceda2f8d571bad7ca37a54cf0250bc"
-PV = "2.6.0+git${SRCPV}"
-
-S = "${WORKDIR}/git"
-
-# NO-OP the do compile rule because this recipe is source only.
-do_compile() {
-}
-
-do_install() {
-	install -d ${D}${prefix}/local/go/src/${PKG_NAME}
-	for j in $(cd ${S} && find src/${PKG_NAME} -name "*.go"); do
-	    if [ ! -d ${D}${prefix}/local/go/$(dirname $j) ]; then
-	        mkdir -p ${D}${prefix}/local/go/$(dirname $j)
-	    fi
-	    cp $j ${D}${prefix}/local/go/$j
-	done
-	cp -r ${S}/src/${PKG_NAME}/LICENSE ${D}${prefix}/local/go/src/${PKG_NAME}/
-}
-
-SYSROOT_PREPROCESS_FUNCS += "go_distribution_digeset_sysroot_preprocess"
-
-go_distribution_digeset_sysroot_preprocess () {
-    install -d ${SYSROOT_DESTDIR}${prefix}/local/go/src/${PKG_NAME}
-    cp -r ${D}${prefix}/local/go/src/${PKG_NAME} ${SYSROOT_DESTDIR}${prefix}/local/go/src/$(dirname ${PKG_NAME})
-}
-
-FILES_${PN} += "${prefix}/local/go/src/${PKG_NAME}/*"
diff --git a/import-layers/meta-virtualization/recipes-devtools/go/go-fsnotify_git.bb b/import-layers/meta-virtualization/recipes-devtools/go/go-fsnotify_git.bb
deleted file mode 100644
index 1d9fbdc..0000000
--- a/import-layers/meta-virtualization/recipes-devtools/go/go-fsnotify_git.bb
+++ /dev/null
@@ -1,29 +0,0 @@
-DESCRIPTION = "A golang registry for global request variables."
-HOMEPAGE = "https://github.com/go-fsnotify/fsnotify"
-SECTION = "devel/go"
-LICENSE = "BSD-3-Clause"
-LIC_FILES_CHKSUM = "file://LICENSE;md5=c38914c9a7ab03bb2b96d4baaee10769"
-
-SRCNAME = "fsnotify"
-
-PKG_NAME = "github.com/fsnotify/${SRCNAME}"
-SRC_URI = "git://${PKG_NAME}.git"
-
-SRCREV = "836bfd95fecc0f1511dd66bdbf2b5b61ab8b00b6"
-PV = "1.2.11+git${SRCREV}"
-
-S = "${WORKDIR}/git"
-
-do_install() {
-	install -d ${D}${prefix}/local/go/src/${PKG_NAME}
-	cp -r ${S}/* ${D}${prefix}/local/go/src/${PKG_NAME}/
-}
-
-SYSROOT_PREPROCESS_FUNCS += "go_fsnotify_sysroot_preprocess"
-
-go_fsnotify_sysroot_preprocess () {
-    install -d ${SYSROOT_DESTDIR}${prefix}/local/go/src/${PKG_NAME}
-    cp -r ${D}${prefix}/local/go/src/${PKG_NAME} ${SYSROOT_DESTDIR}${prefix}/local/go/src/$(dirname ${PKG_NAME})
-}
-
-FILES_${PN} += "${prefix}/local/go/src/${PKG_NAME}/*"
diff --git a/import-layers/meta-virtualization/recipes-devtools/go/go-libtrust_git.bb b/import-layers/meta-virtualization/recipes-devtools/go/go-libtrust_git.bb
deleted file mode 100644
index 5565946..0000000
--- a/import-layers/meta-virtualization/recipes-devtools/go/go-libtrust_git.bb
+++ /dev/null
@@ -1,29 +0,0 @@
-DESCRIPTION = "Primitives for identity and authorization"
-HOMEPAGE = "https://github.com/docker/libtrust"
-SECTION = "devel/go"
-LICENSE = "Apache-2.0"
-LIC_FILES_CHKSUM = "file://LICENSE;md5=435b266b3899aa8a959f17d41c56def8"
-
-SRCNAME = "libtrust"
-
-PKG_NAME = "github.com/docker/${SRCNAME}"
-SRC_URI = "git://${PKG_NAME}.git"
-
-SRCREV = "9cbd2a1374f46905c68a4eb3694a130610adc62a"
-PV = "0.0+git${SRCPV}"
-
-S = "${WORKDIR}/git"
-
-do_install() {
-	install -d ${D}${prefix}/local/go/src/${PKG_NAME}
-	cp -r ${S}/* ${D}${prefix}/local/go/src/${PKG_NAME}/
-}
-
-SYSROOT_PREPROCESS_FUNCS += "go_libtrust_sysroot_preprocess"
-
-go_libtrust_sysroot_preprocess () {
-    install -d ${SYSROOT_DESTDIR}${prefix}/local/go/src/${PKG_NAME}
-    cp -r ${D}${prefix}/local/go/src/${PKG_NAME} ${SYSROOT_DESTDIR}${prefix}/local/go/src/$(dirname ${PKG_NAME})
-}
-
-FILES_${PN} += "${prefix}/local/go/src/${PKG_NAME}/*"
diff --git a/import-layers/meta-virtualization/recipes-devtools/go/go-logrus_git.bb b/import-layers/meta-virtualization/recipes-devtools/go/go-logrus_git.bb
deleted file mode 100644
index 5c0c359..0000000
--- a/import-layers/meta-virtualization/recipes-devtools/go/go-logrus_git.bb
+++ /dev/null
@@ -1,29 +0,0 @@
-DESCRIPTION = "A golang registry for global request variables."
-HOMEPAGE = "https://github.com/Sirupsen/logrus"
-SECTION = "devel/go"
-LICENSE = "MIT"
-LIC_FILES_CHKSUM = "file://LICENSE;md5=8dadfef729c08ec4e631c4f6fc5d43a0"
-
-SRCNAME = "logrus"
-
-PKG_NAME = "github.com/Sirupsen/${SRCNAME}"
-SRC_URI = "git://${PKG_NAME}.git"
-
-SRCREV = "d26492970760ca5d33129d2d799e34be5c4782eb"
-PV = "0.11.0+git${SRCREV}"
-
-S = "${WORKDIR}/git"
-
-do_install() {
-	install -d ${D}${prefix}/local/go/src/${PKG_NAME}
-	cp -r ${S}/* ${D}${prefix}/local/go/src/${PKG_NAME}/
-}
-
-SYSROOT_PREPROCESS_FUNCS += "go_logrus_sysroot_preprocess"
-
-go_logrus_sysroot_preprocess () {
-    install -d ${SYSROOT_DESTDIR}${prefix}/local/go/src/${PKG_NAME}
-    cp -r ${D}${prefix}/local/go/src/${PKG_NAME} ${SYSROOT_DESTDIR}${prefix}/local/go/src/$(dirname ${PKG_NAME})
-}
-
-FILES_${PN} += "${prefix}/local/go/src/${PKG_NAME}/*"
diff --git a/import-layers/meta-virtualization/recipes-devtools/go/go-mux_git.bb b/import-layers/meta-virtualization/recipes-devtools/go/go-mux_git.bb
deleted file mode 100644
index 7a2025a..0000000
--- a/import-layers/meta-virtualization/recipes-devtools/go/go-mux_git.bb
+++ /dev/null
@@ -1,28 +0,0 @@
-DESCRIPTION = "A powerful URL router and dispatcher for golang."
-HOMEPAGE = "https://github.com/gorilla/mux"
-SECTION = "devel/go"
-LICENSE = "BSD-3-Clause"
-LIC_FILES_CHKSUM = "file://LICENSE;md5=c50f6bd9c1e15ed0bad3bea18e3c1b7f"
-
-SRCNAME = "mux"
-
-PKG_NAME = "github.com/gorilla/${SRCNAME}"
-SRC_URI = "git://${PKG_NAME}.git"
-
-SRCREV = "136d54f81f00414c45c3c68dd47e98cc97519c5e"
-
-S = "${WORKDIR}/git"
-
-do_install() {
-	install -d ${D}${prefix}/local/go/src/${PKG_NAME}
-	cp -r ${S}/* ${D}${prefix}/local/go/src/${PKG_NAME}/
-}
-
-SYSROOT_PREPROCESS_FUNCS += "go_mux_sysroot_preprocess"
-
-go_mux_sysroot_preprocess () {
-    install -d ${SYSROOT_DESTDIR}${prefix}/local/go/src/${PKG_NAME}
-    cp -r ${D}${prefix}/local/go/src/${PKG_NAME} ${SYSROOT_DESTDIR}${prefix}/local/go/src/$(dirname ${PKG_NAME})
-}
-
-FILES_${PN} += "${prefix}/local/go/src/${PKG_NAME}/*"
diff --git a/import-layers/meta-virtualization/recipes-devtools/go/go-patricia_git.bb b/import-layers/meta-virtualization/recipes-devtools/go/go-patricia_git.bb
deleted file mode 100644
index 8c1e10d..0000000
--- a/import-layers/meta-virtualization/recipes-devtools/go/go-patricia_git.bb
+++ /dev/null
@@ -1,29 +0,0 @@
-DESCRIPTION = "A generic patricia trie (also called radix tree) implemented in Go (Golang)"
-HOMEPAGE = "https://github.com/gorilla/context"
-SECTION = "devel/go"
-LICENSE = "MIT"
-LIC_FILES_CHKSUM = "file://LICENSE;md5=9949b99212edd6b1e24ce702376c3baf"
-
-SRCNAME = "go-patricia"
-
-PKG_NAME = "github.com/tchap/${SRCNAME}"
-SRC_URI = "git://${PKG_NAME}.git"
-
-SRCREV = "666120de432aea38ab06bd5c818f04f4129882c9"
-PV = "2.2.6+git${SRCPV}"
-
-S = "${WORKDIR}/git"
-
-do_install() {
-	install -d ${D}${prefix}/local/go/src/${PKG_NAME}
-	cp -r ${S}/* ${D}${prefix}/local/go/src/${PKG_NAME}/
-}
-
-SYSROOT_PREPROCESS_FUNCS += "go_patricia_sysroot_preprocess"
-
-go_patricia_sysroot_preprocess () {
-    install -d ${SYSROOT_DESTDIR}${prefix}/local/go/src/${PKG_NAME}
-    cp -r ${D}${prefix}/local/go/src/${PKG_NAME} ${SYSROOT_DESTDIR}${prefix}/local/go/src/$(dirname ${PKG_NAME})
-}
-
-FILES_${PN} += "${prefix}/local/go/src/${PKG_NAME}/*"
diff --git a/import-layers/meta-virtualization/recipes-devtools/go/go-pty_git.bb b/import-layers/meta-virtualization/recipes-devtools/go/go-pty_git.bb
deleted file mode 100644
index bc94b31..0000000
--- a/import-layers/meta-virtualization/recipes-devtools/go/go-pty_git.bb
+++ /dev/null
@@ -1,28 +0,0 @@
-DESCRIPTION = "PTY interface for Go"
-HOMEPAGE = "https://github.com/kr/pty"
-SECTION = "devel/go"
-LICENSE = "MIT"
-LIC_FILES_CHKSUM = "file://License;md5=93958070863d769117fa33b129020050"
-
-SRCNAME = "pty"
-
-PKG_NAME = "github.com/kr/${SRCNAME}"
-SRC_URI = "git://${PKG_NAME}.git"
-
-SRCREV = "05017fcccf23c823bfdea560dcc958a136e54fb7"
-
-S = "${WORKDIR}/git"
-
-do_install() {
-	install -d ${D}${prefix}/local/go/src/${PKG_NAME}
-	cp -r ${S}/* ${D}${prefix}/local/go/src/${PKG_NAME}/
-}
-
-SYSROOT_PREPROCESS_FUNCS += "go_pty_sysroot_preprocess"
-
-go_pty_sysroot_preprocess () {
-    install -d ${SYSROOT_DESTDIR}${prefix}/local/go/src/${PKG_NAME}
-    cp -r ${D}${prefix}/local/go/src/${PKG_NAME} ${SYSROOT_DESTDIR}${prefix}/local/go/src/$(dirname ${PKG_NAME})
-}
-
-FILES_${PN} += "${prefix}/local/go/src/${PKG_NAME}/*"
diff --git a/import-layers/meta-virtualization/recipes-devtools/go/go-systemd_git.bb b/import-layers/meta-virtualization/recipes-devtools/go/go-systemd_git.bb
deleted file mode 100644
index b61c97a..0000000
--- a/import-layers/meta-virtualization/recipes-devtools/go/go-systemd_git.bb
+++ /dev/null
@@ -1,31 +0,0 @@
-DESCRIPTION = "Go bindings to systemd socket activation, journal, D-Bus, and unit files"
-HOMEPAGE = "https://github.com/coreos/go-systemd"
-SECTION = "devel/go"
-LICENSE = "Apache-2.0"
-LIC_FILES_CHKSUM = "file://LICENSE;md5=19cbd64715b51267a47bf3750cc6a8a5"
-
-SRCNAME = "systemd"
-
-PKG_NAME = "github.com/coreos/go-${SRCNAME}"
-SRC_URI = "git://${PKG_NAME}.git"
-
-SRCREV = "b4a58d95188dd092ae20072bac14cece0e67c388"
-PV = "4+git${SRCREV}"
-
-RDEPENDS_${PN} += "bash"
-
-S = "${WORKDIR}/git"
-
-do_install() {
-	install -d ${D}${prefix}/local/go/src/${PKG_NAME}
-	cp -r ${S}/* ${D}${prefix}/local/go/src/${PKG_NAME}/
-}
-
-SYSROOT_PREPROCESS_FUNCS += "go_systemd_sysroot_preprocess"
-
-go_systemd_sysroot_preprocess () {
-    install -d ${SYSROOT_DESTDIR}${prefix}/local/go/src/${PKG_NAME}
-    cp -r ${D}${prefix}/local/go/src/${PKG_NAME} ${SYSROOT_DESTDIR}${prefix}/local/go/src/$(dirname ${PKG_NAME})
-}
-
-FILES_${PN} += "${prefix}/local/go/src/${PKG_NAME}/*"
diff --git a/import-layers/meta-virtualization/recipes-devtools/go/grpc-go_git.bb b/import-layers/meta-virtualization/recipes-devtools/go/grpc-go_git.bb
deleted file mode 100644
index 48c4249..0000000
--- a/import-layers/meta-virtualization/recipes-devtools/go/grpc-go_git.bb
+++ /dev/null
@@ -1,41 +0,0 @@
-DESCRIPTION = "The Go language implementation of gRPC. HTTP/2 based RPC"
-HOMEPAGE = "https://github.com/grpc/grpc-go"
-SECTION = "devel/go"
-LICENSE = "BSD"
-LIC_FILES_CHKSUM = "file://src/${PKG_NAME}/LICENSE;md5=a4bad33881612090c6035d8393175996"
-
-SRCNAME = "grpc-go"
-
-PKG_NAME = "google.golang.org/grpc"
-SRC_URI = "git://github.com/grpc/${SRCNAME}.git;destsuffix=git/src/${PKG_NAME}"
-
-SRCREV = "777daa17ff9b5daef1cfdf915088a2ada3332bf0"
-PV = "1.4.0+git${SRCPV}"
-
-S = "${WORKDIR}/git"
-
-# NO-OP the do compile rule because this recipe is source only.
-do_compile() {
-}
-
-do_install() {
-	install -d ${D}${prefix}/local/go/src/${PKG_NAME}
-	for j in $(cd ${S} && find src/${PKG_NAME} -name "*.go"); do
-	    if [ ! -d ${D}${prefix}/local/go/$(dirname $j) ]; then
-	        mkdir -p ${D}${prefix}/local/go/$(dirname $j)
-	    fi
-	    cp $j ${D}${prefix}/local/go/$j
-	done
-	cp -r ${S}/src/${PKG_NAME}/LICENSE ${D}${prefix}/local/go/src/${PKG_NAME}/
-}
-
-SYSROOT_PREPROCESS_FUNCS += "go_grpc_sysroot_preprocess"
-
-go_grpc_sysroot_preprocess () {
-    install -d ${SYSROOT_DESTDIR}${prefix}/local/go/src/${PKG_NAME}
-    cp -r ${D}${prefix}/local/go/src/${PKG_NAME} ${SYSROOT_DESTDIR}${prefix}/local/go/src/$(dirname ${PKG_NAME})
-}
-
-FILES_${PN} += " \
-    ${prefix}/local/go/src/${PKG_NAME}/* \
-"
diff --git a/import-layers/meta-virtualization/recipes-devtools/go/notary_git.bb b/import-layers/meta-virtualization/recipes-devtools/go/notary_git.bb
deleted file mode 100644
index d638dc1..0000000
--- a/import-layers/meta-virtualization/recipes-devtools/go/notary_git.bb
+++ /dev/null
@@ -1,39 +0,0 @@
-DESCRIPTION = "Notary is a Docker project that allows anyone to have trust over arbitrary collections of data"
-HOMEPAGE = "https://github.com/docker/notary"
-SECTION = "devel/go"
-LICENSE = "Apache-2.0"
-LIC_FILES_CHKSUM = "file://src/${PKG_NAME}/LICENSE;md5=771ddb425ba03c8fab49e5bd9854a4a2"
-
-SRCNAME = "notary"
-
-PKG_NAME = "github.com/docker/${SRCNAME}"
-SRC_URI = "git://${PKG_NAME}.git;destsuffix=git/src/${PKG_NAME}"
-
-SRCREV = "c8aa8cf53cbcda2e92def0c9291e25d770493494"
-PV = "0.4.2+git${SRCPV}"
-
-S = "${WORKDIR}/git"
-
-# NO-OP the do compile rule because this recipe is source only.
-do_compile() {
-}
-
-do_install() {
-	install -d ${D}${prefix}/local/go/src/${PKG_NAME}
-	for j in $(cd ${S} && find src/${PKG_NAME} -name "*.go"); do
-	    if [ ! -d ${D}${prefix}/local/go/$(dirname $j) ]; then
-	        mkdir -p ${D}${prefix}/local/go/$(dirname $j)
-	    fi
-	    cp $j ${D}${prefix}/local/go/$j
-	done
-	cp -r ${S}/src/${PKG_NAME}/LICENSE ${D}${prefix}/local/go/src/${PKG_NAME}/
-}
-
-SYSROOT_PREPROCESS_FUNCS += "go_notary_sysroot_preprocess"
-
-go_notary_sysroot_preprocess () {
-    install -d ${SYSROOT_DESTDIR}${prefix}/local/go/src/${PKG_NAME}
-    cp -r ${D}${prefix}/local/go/src/${PKG_NAME} ${SYSROOT_DESTDIR}${prefix}/local/go/src/$(dirname ${PKG_NAME})
-}
-
-FILES_${PN} += "${prefix}/local/go/src/${PKG_NAME}/*"
diff --git a/import-layers/meta-virtualization/recipes-devtools/python/gunicorn_19.1.1.bb b/import-layers/meta-virtualization/recipes-devtools/python/gunicorn_19.1.1.bb
deleted file mode 100644
index 5c8ea48..0000000
--- a/import-layers/meta-virtualization/recipes-devtools/python/gunicorn_19.1.1.bb
+++ /dev/null
@@ -1,15 +0,0 @@
-SUMMARY = "WSGI HTTP Server for UNIX"
-DESCRIPTION = "\
-  Gunicorn ‘Green Unicorn’ is a Python WSGI HTTP Server for UNIX. It’s \
-  a pre-fork worker model ported from Ruby’s Unicorn project. The \
-  Gunicorn server is broadly compatible with various web frameworks, \
-  simply implemented, light on server resource usage, and fairly speedy. \
-  " 
-LICENSE = "MIT"
-LIC_FILES_CHKSUM = "file://LICENSE;md5=19a2e253a273e390cd1b91d19b6ee236"
-
-SRC_URI = "https://pypi.python.org/packages/source/g/gunicorn/${BPN}-${PV}.tar.gz"
-SRC_URI[md5sum] = "eaa72bff5341c05169b76ce3dcbb8140"
-SRC_URI[sha256sum] = "82715511fb6246fad4ba66d812eb93416ae8371b464fa88bf3867c9c177daa14"
-
-inherit setuptools
diff --git a/import-layers/meta-virtualization/recipes-devtools/python/python-backports-lzma/fix_paths.patch b/import-layers/meta-virtualization/recipes-devtools/python/python-backports-lzma/fix_paths.patch
deleted file mode 100644
index c2b374f..0000000
--- a/import-layers/meta-virtualization/recipes-devtools/python/python-backports-lzma/fix_paths.patch
+++ /dev/null
@@ -1,17 +0,0 @@
----
- setup.py |    4 ++--
- 1 file changed, 2 insertions(+), 2 deletions(-)
-
---- a/setup.py
-+++ b/setup.py
-@@ -32,8 +32,8 @@
- extens = [Extension('backports/lzma/_lzma',
-                     ['backports/lzma/_lzmamodule.c'],
-                     libraries = ['lzma'],
--                    include_dirs = [os.path.join(home, 'include'), '/opt/local/include', '/usr/local/include'],
--                    library_dirs = [os.path.join(home, 'lib'), '/opt/local/lib', '/usr/local/lib']
-+                    include_dirs = [],
-+                    library_dirs = []
-                     )]
- 
- descr = "Backport of Python 3.3's 'lzma' module for XZ/LZMA compressed files."
diff --git a/import-layers/meta-virtualization/recipes-devtools/python/python-backports-lzma_0.0.3.bb b/import-layers/meta-virtualization/recipes-devtools/python/python-backports-lzma_0.0.3.bb
deleted file mode 100644
index a3586c0..0000000
--- a/import-layers/meta-virtualization/recipes-devtools/python/python-backports-lzma_0.0.3.bb
+++ /dev/null
@@ -1,32 +0,0 @@
-HOMEPAGE = "https://github.com/peterjc/backports.lzma"
-SUMMARY = "\
-  Backport of Python 3.3's 'lzma' module for XZ/LZMA compressed files."
-DESCRIPTION = "\
-  This is a backport of the 'lzma' module included in Python 3.3 or later \
-  by Nadeem Vawda and Per Oyvind Karlsen, which provides a Python wrapper \
-  for XZ Utils (aka LZMA Utils v2) by Igor Pavlov. \
-  . \
-  In order to compile this, you will need to install XZ Utils from \
-  http://tukaani.org/xz/ \
-  "
-SECTION = "devel/python"
-LICENSE = "BSD"
-LIC_FILES_CHKSUM = "file://PKG-INFO;md5=db4345b3b9524aabc8fe8c65f235c6b2"
-
-SRC_URI[md5sum] = "c3d109746aefa86268e500c07d7e8e0f"
-SRC_URI[sha256sum] = "bac58aec8d39ac3d22250840fb24830d0e4a0ef05ad8f3f09172dc0cc80cdbca"
-
-S = "${WORKDIR}/${SRCNAME}-${PV}"
-
-inherit setuptools
-
-DEPENDS += "xz"
-
-SRCNAME = "backports.lzma"
-
-FILESEXTRAPATHS_prepend := "${THISDIR}/${PN}:"
-
-SRC_URI = "\
-	https://pypi.python.org/packages/source/b/backports.lzma/${SRCNAME}-${PV}.tar.gz \
-	file://fix_paths.patch \
-	"
diff --git a/import-layers/meta-virtualization/recipes-devtools/python/python-blinker_1.3.bb b/import-layers/meta-virtualization/recipes-devtools/python/python-blinker_1.3.bb
deleted file mode 100644
index 8abb9c0..0000000
--- a/import-layers/meta-virtualization/recipes-devtools/python/python-blinker_1.3.bb
+++ /dev/null
@@ -1,24 +0,0 @@
-HOMEPAGE = "https://pypi.python.org/pypi/blinker"
-SUMMARY = "Fast, simple object-to-object and broadcast signaling"
-DESCRIPTION = " \
-  Blinker provides a fast dispatching system that allows any number of \
-  interested parties to subscribe to events, or “signals”. \
-  . \
-  Signal receivers can subscribe to specific senders or receive signals \
-  sent by any sender. \
-  "
-SECTION = "devel/python"
-LICENSE = "MIT"
-LIC_FILES_CHKSUM = "file://LICENSE;md5=8baf1d53a00de619f60052e4752a89af"
-
-SRCNAME = "blinker"
-SRC_URI = "https://pypi.python.org/packages/source/b/blinker/${SRCNAME}-${PV}.tar.gz"
-SRC_URI[md5sum] = "66e9688f2d287593a0e698cd8a5fbc57"
-SRC_URI[sha256sum] = "6811010809262261e41ab7b92f3f6d23f35cf816fbec2bc05077992eebec6e2f"
-
-S = "${WORKDIR}/${SRCNAME}-${PV}"
-
-DEFAULT_PREFERENCE = "-1"
-
-inherit setuptools
-
diff --git a/import-layers/meta-virtualization/recipes-devtools/python/python-boto_2.34.0.bb b/import-layers/meta-virtualization/recipes-devtools/python/python-boto_2.34.0.bb
deleted file mode 100644
index f94f324..0000000
--- a/import-layers/meta-virtualization/recipes-devtools/python/python-boto_2.34.0.bb
+++ /dev/null
@@ -1,25 +0,0 @@
-HOMEPAGE = "https://github.com/boto/boto"
-SUMMARY = "Amazon Web Services API"
-DESCRIPTION = "\
-  Boto is a Python package that provides interfaces to Amazon Web Services. \
-  Currently, all features work with Python 2.6 and 2.7. Work is under way to \
-  support Python 3.3+ in the same codebase. Modules are being ported one at \
-  a time with the help of the open source community, so please check below \
-  for compatibility with Python 3.3+. \
-  "
-SECTION = "devel/python"
-LICENSE = "MIT"
-LIC_FILES_CHKSUM = "file://setup.py;md5=182ef81236d3fac2c6ed8e8d3c988ec8"
-
-PR = "r0"
-SRCNAME = "boto"
-
-SRC_URI = "https://pypi.python.org/packages/source/b/boto/${SRCNAME}-${PV}.tar.gz"
-
-SRC_URI[md5sum] = "5556223d2d0cc4d06dd4829e671dcecd"
-SRC_URI[sha256sum] = "33baab022ecb803414ad0d6cf4041d010cfc2755ff8acc3bea7b32e77ba98be0"
-
-S = "${WORKDIR}/${SRCNAME}-${PV}"
-
-inherit setuptools
-
diff --git a/import-layers/meta-virtualization/recipes-devtools/python/python-bugsnag_2.0.2.bb b/import-layers/meta-virtualization/recipes-devtools/python/python-bugsnag_2.0.2.bb
deleted file mode 100644
index edf880f..0000000
--- a/import-layers/meta-virtualization/recipes-devtools/python/python-bugsnag_2.0.2.bb
+++ /dev/null
@@ -1,26 +0,0 @@
-HOMEPAGE = "https://bugsnag.com/"
-SUMMARY = "Automatic error monitoring for django, flask, etc."
-DESCRIPTION = "\
-  The official Python notifier for `Bugsnag <https://bugsnag.com/>`_. \
-  Provides support for automatically capturing and sending exceptions \
-  in your Django and other Python apps to Bugsnag, to help you find \
-  and solve your bugs as fast as possible. \
-  "
-SECTION = "devel/python"
-LICENSE = "MIT"
-LIC_FILES_CHKSUM = "file://PKG-INFO;md5=f6df6ab9f1b615a140ebb2a48f61bddc"
-
-PR = "r0"
-SRCNAME = "bugsnag"
-
-SRC_URI = "https://pypi.python.org/packages/source/b/bugsnag/${SRCNAME}-${PV}.tar.gz"
-
-SRC_URI[md5sum] = "e16360d86979890892cd388635f213e7"
-SRC_URI[sha256sum] = "093934b3cd1d36ba2b89cfe1673b14ba59043417fe500a02dbf6de0df43ea962"
-
-S = "${WORKDIR}/${SRCNAME}-${PV}"
-
-inherit setuptools
-
-DEPENDS += "python-webob python-flask python-blinker"
-
diff --git a/import-layers/meta-virtualization/recipes-devtools/python/python-docker-registry-core_2.0.3.bb b/import-layers/meta-virtualization/recipes-devtools/python/python-docker-registry-core_2.0.3.bb
deleted file mode 100644
index 7aa6825..0000000
--- a/import-layers/meta-virtualization/recipes-devtools/python/python-docker-registry-core_2.0.3.bb
+++ /dev/null
@@ -1,29 +0,0 @@
-HOMEPAGE = "https://pypi.python.org/pypi/docker-registry-core"
-SUMMARY = "Docker registry core package"
-DESCRIPTION = "core package for docker-registry (drivers) developers"
-SECTION = "devel/python"
-LICENSE = "Apache-2.0"
-LIC_FILES_CHKSUM = "file://LICENSE;md5=3b83ef96387f14655fc854ddc3c6bd57"
-
-SRCNAME = "docker-registry-core"
-
-SRC_URI = "https://pypi.python.org/packages/source/d/docker-registry-core/${SRCNAME}-${PV}.tar.gz"
-
-S = "${WORKDIR}/${SRCNAME}-${PV}"
-
-SRC_URI[md5sum] = "610ef9395f2e9a2f91c68d13325fce7b"
-SRC_URI[sha256sum] = "347e804f1f35b28dbe27bf8d7a0b630fca29d684032139bf26e3940572360360"
-
-inherit setuptools
-
-DEPENDS += "\
-	python-distribute \
-	python-boto (= 2.34.0) \
-	python-redis (= 2.10.3) \
-	python-simplejson (= 3.6.2) \
-	"
-
-# boto 2.34.0
-# redis 2.10.3
-# simplejson 3.6.2
-# setuptools 5.8
diff --git a/import-layers/meta-virtualization/recipes-devtools/python/python-docopt.inc b/import-layers/meta-virtualization/recipes-devtools/python/python-docopt.inc
deleted file mode 100644
index 4f464c1..0000000
--- a/import-layers/meta-virtualization/recipes-devtools/python/python-docopt.inc
+++ /dev/null
@@ -1,9 +0,0 @@
-SUMMARY = "Pythonic argument parser, that will make you smile"
-HOMEPAGE = "http://docopt.org/"
-LICENSE = "MIT"
-LIC_FILES_CHKSUM = "file://LICENSE-MIT;md5=09b77fb74986791a3d4a0e746a37d88f"
-
-inherit pypi
-
-SRC_URI[md5sum] = "4bc74561b37fad5d3e7d037f82a4c3b1"
-SRC_URI[sha256sum] = "49b3a825280bd66b3aa83585ef59c4a8c82f2c8a522dbe754a8bc8d08c85c491"
diff --git a/import-layers/meta-virtualization/recipes-devtools/python/python-flask-cors_1.10.3.bb b/import-layers/meta-virtualization/recipes-devtools/python/python-flask-cors_1.10.3.bb
deleted file mode 100644
index c39e9b2..0000000
--- a/import-layers/meta-virtualization/recipes-devtools/python/python-flask-cors_1.10.3.bb
+++ /dev/null
@@ -1,22 +0,0 @@
-HOMEPAGE = "https://pypi.python.org/pypi/Flask-Cors/1.10.3"
-SUMMARY = "A Flask extension adding a decorator for CORS support"
-DESCRIPTION = "\
-  A Flask extension for handling Cross Origin Resource Sharing (CORS), making cross-origin AJAX possible \
-  "
-SECTION = "devel/python"
-LICENSE = "MIT"
-LIC_FILES_CHKSUM = "file://LICENSE;md5=4784781a5ee9fed9c50272e733e07685"
-
-DEPENDS += "python-six python-flask"
-
-PR = "r0"
-SRCNAME = "Flask-Cors"
-
-SRC_URI = "https://pypi.python.org/packages/source/F/Flask-Cors/${SRCNAME}-${PV}.tar.gz"
-
-SRC_URI[md5sum] = "4f3c75ace0f724d1de167bd73745c965"
-SRC_URI[sha256sum] = "9e6927aa0a46f314bca0ec63eb871cee898a162adfdd5b65224db7a008287423"
-
-S = "${WORKDIR}/${SRCNAME}-${PV}"
-
-inherit setuptools
diff --git a/import-layers/meta-virtualization/recipes-devtools/python/python-flask_0.10.1.bb b/import-layers/meta-virtualization/recipes-devtools/python/python-flask_0.10.1.bb
deleted file mode 100644
index 263e53d..0000000
--- a/import-layers/meta-virtualization/recipes-devtools/python/python-flask_0.10.1.bb
+++ /dev/null
@@ -1,20 +0,0 @@
-DESCRIPTION = "A microframework based on Werkzeug, Jinja2 and good intentions"
-HOMEPAGE = "https://pypi.python.org/pypi/Flask/"
-SECTION = "devel/python"
-LICENSE = "BSD-3-Clause"
-LIC_FILES_CHKSUM = "file://LICENSE;md5=79aa8b7bc4f781210d6b5c06d6424cb0"
-
-PR = "r0"
-SRCNAME = "Flask"
-
-SRC_URI = "https://pypi.python.org/packages/source/F/${SRCNAME}/${SRCNAME}-${PV}.tar.gz"
-
-SRC_URI[md5sum] = "378670fe456957eb3c27ddaef60b2b24"
-SRC_URI[sha256sum] = "4c83829ff83d408b5e1d4995472265411d2c414112298f2eb4b359d9e4563373"
-
-S = "${WORKDIR}/${SRCNAME}-${PV}"
-
-inherit setuptools
-
-CLEANBROKEN = "1"
-
diff --git a/import-layers/meta-virtualization/recipes-devtools/python/python-gevent/gevent-allow-ssl-v2-or-v3-certificates.patch b/import-layers/meta-virtualization/recipes-devtools/python/python-gevent/gevent-allow-ssl-v2-or-v3-certificates.patch
deleted file mode 100644
index 623d04f..0000000
--- a/import-layers/meta-virtualization/recipes-devtools/python/python-gevent/gevent-allow-ssl-v2-or-v3-certificates.patch
+++ /dev/null
@@ -1,29 +0,0 @@
-From c2dc97478fcc3757e09d5d2997391960a8351d53 Mon Sep 17 00:00:00 2001
-From: Bruce Ashfield <bruce.ashfield@windriver.com>
-Date: Sun, 29 Mar 2015 22:34:28 -0400
-Subject: [PATCH] gevent: allow ssl v2 or v3 certificates
-
-Work around an issue with python 2.7 not always having SSLv3 available
-by allowing v2 or v3 certificates.
-
-Signed-off-by: Bruce Ashfield <bruce.ashfield@windriver.com>
----
- gevent/ssl.py | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/gevent/ssl.py b/gevent/ssl.py
-index ce6434718d1b..93c0d642da5f 100644
---- a/gevent/ssl.py
-+++ b/gevent/ssl.py
-@@ -383,7 +383,7 @@ def wrap_socket(sock, keyfile=None, certfile=None,
-                      ciphers=ciphers)
- 
- 
--def get_server_certificate(addr, ssl_version=PROTOCOL_SSLv3, ca_certs=None):
-+def get_server_certificate(addr, ssl_version=PROTOCOL_SSLv23, ca_certs=None):
-     """Retrieve the certificate from the server at the specified address,
-     and return it as a PEM-encoded string.
-     If 'ca_certs' is specified, validate the server cert against it.
--- 
-1.9.1
-
diff --git a/import-layers/meta-virtualization/recipes-devtools/python/python-gevent/libev-conf.patch b/import-layers/meta-virtualization/recipes-devtools/python/python-gevent/libev-conf.patch
deleted file mode 100644
index 283705f..0000000
--- a/import-layers/meta-virtualization/recipes-devtools/python/python-gevent/libev-conf.patch
+++ /dev/null
@@ -1,19 +0,0 @@
-Due to differences in library locations, the cross compile test can fail because it can't run
-the conftest binary (dynamically linked). Building it statically instead.
-
-Signed-off-by: Amy Fong <amy.fong@windriver.com>
----
- libev/configure |    2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
---- a/libev/configure
-+++ b/libev/configure
-@@ -2730,7 +2730,7 @@
- ac_ext=c
- ac_cpp='$CPP $CPPFLAGS'
- 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_link='$CC -static -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
- ac_compiler_gnu=$ac_cv_c_compiler_gnu
- if test -n "$ac_tool_prefix"; then
-   # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args.
diff --git a/import-layers/meta-virtualization/recipes-devtools/python/python-gevent_1.0.1.bb b/import-layers/meta-virtualization/recipes-devtools/python/python-gevent_1.0.1.bb
deleted file mode 100644
index 8cd1388..0000000
--- a/import-layers/meta-virtualization/recipes-devtools/python/python-gevent_1.0.1.bb
+++ /dev/null
@@ -1,30 +0,0 @@
-HOMEPAGE = "http://www.gevent.org"
-SUMMARY = "A coroutine-based Python networking library"
-DESCRIPTION = "\
-  gevent is a coroutine-based Python networking library that uses greenlet \
-  to provide a high-level synchronous API on top of the libevent event \
-  loop. \
-  " 
-SECTION = "devel/python"
-LICENSE = "MIT"
-LIC_FILES_CHKSUM = "file://LICENSE;md5=2dbb33d00e1fd31c7041460a81ac0bd2"
-DEPENDS += "python-greenlet libevent"
-RDEPENDS_${PN} += "python-greenlet python-mime python-pprint python-re"
-
-SRC_URI[md5sum] = "7b952591d1a0174d6eb6ac47bd975ab6"
-SRC_URI[sha256sum] = "4627e215d058f71d95e6b26d9e7be4c263788a4756bd2858a93775f6c072df43"
-
-inherit setuptools pypi
-
-FILESEXTRAPATHS_prepend := "${THISDIR}/${PN}:"
-SRC_URI += "file://libev-conf.patch"
-SRC_URI += "file://gevent-allow-ssl-v2-or-v3-certificates.patch"
-
-# The python-gevent has no autoreconf ability
-# and the logic for detecting a cross compile is flawed
-# so always force a cross compile
-do_configure_append() {
-	sed -i -e 's/^cross_compiling=no/cross_compiling=yes/' ${S}/libev/configure
-}
-
-DEFAULT_PREFERENCE = "-1"
diff --git a/import-layers/meta-virtualization/recipes-devtools/python/python-m2crypto/m2crypto-Fix-build-with-SWIG-3.0.5.patch b/import-layers/meta-virtualization/recipes-devtools/python/python-m2crypto/m2crypto-Fix-build-with-SWIG-3.0.5.patch
deleted file mode 100644
index c408595..0000000
--- a/import-layers/meta-virtualization/recipes-devtools/python/python-m2crypto/m2crypto-Fix-build-with-SWIG-3.0.5.patch
+++ /dev/null
@@ -1,158 +0,0 @@
-From 8430e7202407fb1a0a104b0decdcc9da9e41a52b Mon Sep 17 00:00:00 2001
-From: Jackie Huang <jackie.huang@windriver.com>
-Date: Mon, 4 Apr 2016 23:28:15 -0400
-Subject: [PATCH] Fix build with SWIG 3.0.5
-
-See analysis and previous patches in
-https://github.com/martinpaljak/M2Crypto/issues/60 and
-https://github.com/swig/swig/issues/344, in particular this adds the
-build machinery to patch
-https://github.com/martinpaljak/M2Crypto/issues/60#issuecomment-75735489
-
-Fixes #47
-
-Author: Miloslav Trmac <mitr@redhat.com>
-
-Upstream-Status: Backport
-
-Signed-off-by: Jackie Huang <jackie.huang@windriver.com>
----
- M2Crypto/__init__.py |  4 ++--
- M2Crypto/m2.py       |  2 +-
- SWIG/_lib.i          |  4 ++++
- SWIG/_pkcs7.i        |  1 +
- setup.py             | 24 ++++++++++++++++++++++++
- 5 files changed, 32 insertions(+), 3 deletions(-)
-
-diff --git a/M2Crypto/__init__.py b/M2Crypto/__init__.py
-index 647e057..280af94 100644
---- a/M2Crypto/__init__.py
-+++ b/M2Crypto/__init__.py
-@@ -19,7 +19,7 @@ Copyright 2008-2011 Heikki Toivonen. All rights reserved.
- version_info = (0, 22)
- version = '.'.join([str(_v) for _v in version_info])
- 
--import __m2crypto
-+import _m2crypto
- import m2
- import ASN1
- import AuthCookie
-@@ -47,4 +47,4 @@ import m2xmlrpclib
- import threading
- import util
- 
--__m2crypto.lib_init()
-+_m2crypto.lib_init()
-diff --git a/M2Crypto/m2.py b/M2Crypto/m2.py
-index e4bb695..822143f 100644
---- a/M2Crypto/m2.py
-+++ b/M2Crypto/m2.py
-@@ -25,7 +25,7 @@ Portions created by Open Source Applications Foundation (OSAF) are
- Copyright (C) 2004 OSAF. All Rights Reserved.
- """
- 
--from __m2crypto import *
-+from _m2crypto import *
- lib_init()
- 
- 
-diff --git a/SWIG/_lib.i b/SWIG/_lib.i
-index 0d40698..6cc1a44 100644
---- a/SWIG/_lib.i
-+++ b/SWIG/_lib.i
-@@ -66,6 +66,7 @@ int ssl_verify_callback(int ok, X509_STORE_CTX *ctx) {
-     int cret;
-     int new_style_callback = 0, warning_raised_exception=0;
-     PyGILState_STATE gilstate;
-+    PyObject *self = NULL; /* bug in SWIG_NewPointerObj as of 3.0.5 */
- 
-     ssl = (SSL *)X509_STORE_CTX_get_app_data(ctx);
- 
-@@ -151,6 +152,7 @@ int ssl_verify_callback(int ok, X509_STORE_CTX *ctx) {
- void ssl_info_callback(const SSL *s, int where, int ret) {
-     PyObject *argv, *retval, *_SSL;
-     PyGILState_STATE gilstate;
-+    PyObject *self = NULL; /* bug in SWIG_NewPointerObj as of 3.0.5 */
- 
-     gilstate = PyGILState_Ensure();
- 
-@@ -170,6 +172,7 @@ DH *ssl_set_tmp_dh_callback(SSL *ssl, int is_export, int keylength) {
-     PyObject *argv, *ret, *_ssl;
-     DH *dh;
-     PyGILState_STATE gilstate;
-+    PyObject *self = NULL; /* bug in SWIG_NewPointerObj as of 3.0.5 */
- 
-     gilstate = PyGILState_Ensure();
- 
-@@ -193,6 +196,7 @@ RSA *ssl_set_tmp_rsa_callback(SSL *ssl, int is_export, int keylength) {
-     PyObject *argv, *ret, *_ssl;
-     RSA *rsa;
-     PyGILState_STATE gilstate;
-+    PyObject *self = NULL; /* bug in SWIG_NewPointerObj as of 3.0.5 */
- 
-     gilstate = PyGILState_Ensure();
- 
-diff --git a/SWIG/_pkcs7.i b/SWIG/_pkcs7.i
-index 22d791a..20dfbaf 100644
---- a/SWIG/_pkcs7.i
-+++ b/SWIG/_pkcs7.i
-@@ -157,6 +157,7 @@ PyObject *smime_read_pkcs7(BIO *bio) {
-     BIO *bcont = NULL;
-     PKCS7 *p7;
-     PyObject *tuple, *_p7, *_BIO;
-+    PyObject *self = NULL; /* bug in SWIG_NewPointerObj as of 3.0.5 */
- 
-     if (BIO_method_type(bio) == BIO_TYPE_MEM) {
-         /* OpenSSL FAQ explains that this is needed for mem BIO to return EOF,
-diff --git a/setup.py b/setup.py
-index bac6f9f..f59dc18 100644
---- a/setup.py
-+++ b/setup.py
-@@ -19,6 +19,7 @@ from setuptools.command import build_ext
- 
- from distutils.core import Extension
- from distutils.spawn import find_executable
-+from distutils.file_util import copy_file
- 
- 
- class _M2CryptoBuildExt(build_ext.build_ext):
-@@ -77,6 +78,15 @@ class _M2CryptoBuildExt(build_ext.build_ext):
-                           [opensslIncludeDir, os.path.join(opensslIncludeDir, "openssl")]]
-         self.swig_opts.append('-includeall')
-         self.swig_opts.append('-modern')
-+        self.swig_opts.append('-builtin')
-+
-+        # These two lines are a workaround for
-+        # http://bugs.python.org/issue2624 , hard-coding that we are only
-+        # building a single extension with a known path; a proper patch to
-+        # distutils would be in the run phase, when extension name and path are
-+        # known.
-+        self.swig_opts.append('-outdir')
-+        self.swig_opts.append(os.path.join(self.build_lib, 'M2Crypto'))
- 
-         # Fedora does hat tricks.
-         if platform.linux_distribution()[0] in ['Fedora', 'CentOS']:
-@@ -98,6 +108,20 @@ class _M2CryptoBuildExt(build_ext.build_ext):
- 
-         self.library_dirs += [os.path.join(self.openssl, opensslLibraryDir)]
- 
-+    def run(self):
-+        '''Overloaded build_ext implementation to allow inplace=1 to work,
-+        which is needed for (python setup.py test).'''
-+        # This is another workaround for http://bugs.python.org/issue2624 + the
-+        # corresponding lack of support in setuptools' test command. Note that
-+        # just using self.inplace in finalize_options() above does not work
-+        # because swig is not rerun if the __m2crypto.so extension exists.
-+        # Again, hard-coding our extension name and location.
-+        build_ext.build_ext.run(self)
-+        if self.inplace:
-+            copy_file(os.path.join(self.build_lib, 'M2Crypto', '_m2crypto.py'),
-+                      os.path.join('M2Crypto', '_m2crypto.py'),
-+                      verbose=self.verbose, dry_run=self.dry_run)
-+
- if sys.platform == 'darwin':
-    my_extra_compile_args = ["-Wno-deprecated-declarations"]
- else:
--- 
-1.9.1
-
diff --git a/import-layers/meta-virtualization/recipes-devtools/python/python-m2crypto_0.22.3.bb b/import-layers/meta-virtualization/recipes-devtools/python/python-m2crypto_0.22.3.bb
deleted file mode 100644
index e151dcc..0000000
--- a/import-layers/meta-virtualization/recipes-devtools/python/python-m2crypto_0.22.3.bb
+++ /dev/null
@@ -1,63 +0,0 @@
-HOMEPAGE = "http://chandlerproject.org/bin/view/Projects/MeTooCrypto"
-SUMMARY = "A Python crypto and SSL toolkit"
-DESCRIPTION = "\
-  M2Crypto is the most complete Python wrapper for OpenSSL featuring RSA, \
-  DSA, DH, EC, HMACs, message digests, symmetric ciphers (including \
-  AES); SSL functionality to implement clients and servers; HTTPS \
-  extensions to Python's httplib, urllib, and xmlrpclib; unforgeable \
-  HMAC'ing AuthCookies for web session management; FTP/TLS client and \
-  server; S/MIME; ZServerSSL: A HTTPS server for Zope and ZSmime: An \
-  S/MIME messenger for Zope. M2Crypto can also be used to provide SSL \
-  for Twisted. \
-  "
-LICENSE = "BSD"
-LIC_FILES_CHKSUM = "file://PKG-INFO;md5=0ccca7097c1d29fa42e75e9c15c6ff2e"
-
-PYPI_PACKAGE = "M2Crypto"
-
-SRC_URI += " \
-           file://m2crypto-Fix-build-with-SWIG-3.0.5.patch \
-"
-
-SRC_URI[md5sum] = "573f21aaac7d5c9549798e72ffcefedd"
-SRC_URI[sha256sum] = "6071bfc817d94723e9b458a010d565365104f84aa73f7fe11919871f7562ff72"
-
-DEFAULT_PREFERENCE = "-1"
-
-inherit setuptools pypi
-
-DEPENDS += "openssl swig-native"
-
-DISTUTILS_BUILD_ARGS += "build_ext -I${STAGING_INCDIR}"
-
-inherit setuptools pypi
-
-SWIG_FEATURES_x86-64 = "-D__x86_64__"
-SWIG_FEATURES ?= ""
-export SWIG_FEATURES
-
-# Get around a problem with swig, but only if the
-# multilib header file exists.
-#
-do_compile_prepend() {
-	sed -i -e 's/self.add_multiarch_paths.*$/# &/;'  ${S}/setup.py
-	sed -i -e 's/opensslIncludeDir = .*$/opensslIncludeDir = os.getenv("STAGING_INCDIR")/;'  ${S}/setup.py
-	sed -i -e 's/opensslLibraryDir = .*$/opensslLibraryDir = os.getenv("STAGING_LIBDIR")/;'  ${S}/setup.py
-
-	if [ "${SITEINFO_BITS}" = "64" ];then
-		bit="64"
-	else
-		bit="32"
-	fi
-
-	if [ -e ${STAGING_INCDIR}/openssl/opensslconf-${bit}.h ]; then
-		for i in SWIG/_ec.i SWIG/_evp.i; do
-			sed -i -e "s/opensslconf.*\./opensslconf-${bit}\./" "$i"
-		done
-	elif [ -e ${STAGING_INCDIR}/openssl/opensslconf-n${bit}.h ] ;then
-		for i in SWIG/_ec.i SWIG/_evp.i; do
-			sed -i -e "s/opensslconf.*\./opensslconf-n${bit}\./" "$i"
-		done
-	fi
-}
-
diff --git a/import-layers/meta-virtualization/recipes-devtools/python/python-newrelic_2.22.0.19.bb b/import-layers/meta-virtualization/recipes-devtools/python/python-newrelic_2.22.0.19.bb
deleted file mode 100644
index 3891824..0000000
--- a/import-layers/meta-virtualization/recipes-devtools/python/python-newrelic_2.22.0.19.bb
+++ /dev/null
@@ -1,26 +0,0 @@
-HOMEPAGE = "http://www.newrelic.com"
-SUMMARY = "New Relic Python Agent"
-DESCRIPTION = "\
-  Python agent for the New Relic web application performance monitoring \
-  service. Check the release notes for what has changed in this version. \
-  "
-SECTION = "devel/python"
-LICENSE = "BSD-3-Clause & MIT & Python-2.0 & BSD-2-Clause & NewRelic"
-LIC_FILES_CHKSUM = "file://newrelic/LICENSE;md5=0f6cc160a8ed6759faa408a30b6ac978"
-
-PR = "r0"
-SRCNAME = "newrelic"
-
-SRC_URI = "https://pypi.python.org/packages/source/n/newrelic/${SRCNAME}-${PV}.tar.gz"
-
-SRC_URI[md5sum] = "f8c9bf996d040a11847d14682b290eff"
-SRC_URI[sha256sum] = "aa8869413c21aff441a77582df1e0fdc0f67342760eb7560d33ed3bbed7edf7b"
-
-S = "${WORKDIR}/${SRCNAME}-${PV}"
-
-inherit setuptools
-
-FILES_${PN}-dbg += "\
-  ${PYTHON_SITEPACKAGES_DIR}/newrelic-${PV}/newrelic/*/.debug \
-  ${PYTHON_SITEPACKAGES_DIR}/newrelic-${PV}/newrelic/packages/*/.debug/ \
-  "
diff --git a/import-layers/meta-virtualization/recipes-devtools/python/python-pyyaml_3.11.bb b/import-layers/meta-virtualization/recipes-devtools/python/python-pyyaml_3.11.bb
deleted file mode 100644
index ecb1719..0000000
--- a/import-layers/meta-virtualization/recipes-devtools/python/python-pyyaml_3.11.bb
+++ /dev/null
@@ -1,32 +0,0 @@
-HOMEPAGE = "http://www.pyyaml.org"
-SUMMARY = "Python support for YAML"
-DESCRIPTION = "\
-  YAML is a data serialization format designed for human readability \
-  and interaction with scripting languages.  PyYAML is a YAML parser \
-  and emitter for Python. \
-  .       \
-  PyYAML features a complete YAML 1.1 parser, Unicode support, pickle \
-  support, capable extension API, and sensible error messages.  PyYAML \
-  supports standard YAML tags and provides Python-specific tags that \
-  allow to represent an arbitrary Python object. \
-  .       \
-  PyYAML is applicable for a broad range of tasks from complex \
-  configuration files to object serialization and persistance. \
-  "
-SECTION = "devel/python"
-LICENSE = "MIT"
-LIC_FILES_CHKSUM = "file://LICENSE;md5=6015f088759b10e0bc2bf64898d4ae17"
-
-SRCNAME = "PyYAML"
-SRC_URI = "http://pyyaml.org/download/pyyaml/${SRCNAME}-${PV}.tar.gz"
-
-SRC_URI[md5sum] = "f50e08ef0fe55178479d3a618efe21db"
-SRC_URI[sha256sum] = "c36c938a872e5ff494938b33b14aaa156cb439ec67548fcab3535bb78b0846e8"
-
-S = "${WORKDIR}/${SRCNAME}-${PV}"
-
-DEFAULT_PREFERENCE = "-1"
-
-inherit setuptools
-
-DEPENDS += "libyaml python-cython-native"
diff --git a/import-layers/meta-virtualization/recipes-devtools/python/python-redis_2.10.3.bb b/import-layers/meta-virtualization/recipes-devtools/python/python-redis_2.10.3.bb
deleted file mode 100644
index 2ef2b6b..0000000
--- a/import-layers/meta-virtualization/recipes-devtools/python/python-redis_2.10.3.bb
+++ /dev/null
@@ -1,22 +0,0 @@
-HOMEPAGE = "https://pypi.python.org/pypi/redis/"
-SUMMARY = "Python client for Redis key-value store"
-DESCRIPTION = "The Python interface to the Redis key-value store."
-SECTION = "devel/python"
-LICENSE = "MIT"
-LIC_FILES_CHKSUM = "file://LICENSE;md5=51d9ad56299ab60ba7be65a621004f27"
-
-PR = "r0"
-SRCNAME = "redis"
-
-SRC_URI = "https://pypi.python.org/packages/source/r/redis/${SRCNAME}-${PV}.tar.gz"
-
-SRC_URI[md5sum] = "7619221ad0cbd124a5687458ea3f5289"
-SRC_URI[sha256sum] = "a4fb37b02860f6b1617f6469487471fd086dd2d38bbce640c2055862b9c4019c"
-
-S = "${WORKDIR}/${SRCNAME}-${PV}"
-
-DEFAULT_PREFERENCE = "-1"
-
-inherit setuptools
-
-RDEPENDS_${PN} = "redis"
diff --git a/import-layers/meta-virtualization/recipes-devtools/python/python-sphinx_1.4.1.bb b/import-layers/meta-virtualization/recipes-devtools/python/python-sphinx_1.4.1.bb
deleted file mode 100644
index 476ff97..0000000
--- a/import-layers/meta-virtualization/recipes-devtools/python/python-sphinx_1.4.1.bb
+++ /dev/null
@@ -1,12 +0,0 @@
-DESCRIPTION = "Python documentation generator"
-HOMEPAGE = "http://sphinx-doc.org/"
-SECTION = "devel/python"
-LICENSE = "BSD"
-LIC_FILES_CHKSUM = "file://LICENSE;md5=72f034adc6f7b05b09bc00d1a05bb065"
-
-PYPI_PACKAGE = "Sphinx"
-
-SRC_URI[md5sum] = "4c4988e0306a04cef8dccc384281e585"
-SRC_URI[sha256sum] = "c6871a784d24aba9270b6b28541537a57e2fcf4d7c799410eba18236bc76d6bc"
-
-inherit setuptools pypi
diff --git a/import-layers/meta-virtualization/recipes-devtools/python/python-sqlalchemy_1.0.16.bb b/import-layers/meta-virtualization/recipes-devtools/python/python-sqlalchemy_1.0.16.bb
deleted file mode 100644
index 5eb60b5..0000000
--- a/import-layers/meta-virtualization/recipes-devtools/python/python-sqlalchemy_1.0.16.bb
+++ /dev/null
@@ -1,16 +0,0 @@
-DESCRIPTION = "Python SQL toolkit and Object Relational Mapper that gives \
-application developers the full power and flexibility of SQL"
-HOMEPAGE = "http://www.sqlalchemy.org/"
-LICENSE = "MIT"
-LIC_FILES_CHKSUM = "file://LICENSE;md5=d7dba1721bc8ce05d421f7279cb87971"
-RDEPENDS_${PN} += "python-numbers"
-
-SRCNAME = "SQLAlchemy"
-SRC_URI = "https://pypi.io/packages/source/S/${SRCNAME}/${SRCNAME}-${PV}.tar.gz"
-
-SRC_URI[md5sum] = "42c81726e7e145c206dac46964b4a167"
-SRC_URI[sha256sum] = "e2dfdaa0983931ac1b0522dd637f08a52cf3081746513ac79c50843277ebe463"
-
-S = "${WORKDIR}/${SRCNAME}-${PV}"
-
-inherit setuptools
diff --git a/import-layers/meta-virtualization/recipes-devtools/python/python-sqlalchemy_1.1.5.bb b/import-layers/meta-virtualization/recipes-devtools/python/python-sqlalchemy_1.1.5.bb
deleted file mode 100644
index f22d272..0000000
--- a/import-layers/meta-virtualization/recipes-devtools/python/python-sqlalchemy_1.1.5.bb
+++ /dev/null
@@ -1,18 +0,0 @@
-DESCRIPTION = "Python SQL toolkit and Object Relational Mapper that gives \
-application developers the full power and flexibility of SQL"
-HOMEPAGE = "http://www.sqlalchemy.org/"
-LICENSE = "MIT"
-LIC_FILES_CHKSUM = "file://LICENSE;md5=452f4b8adb0feba42e5be5f1fbfbf538"
-RDEPENDS_${PN} += "python-numbers"
-
-SRCNAME = "SQLAlchemy"
-SRC_URI = "https://pypi.python.org/packages/da/04/8048a5075d6e29235bbd6f1ea092a38dbe2630c670e73d4aa923a4e5521c/${SRCNAME}-${PV}.tar.gz"
-
-SRC_URI[md5sum] = "50685d97dca4b91945ae6309d03ab8c9"
-SRC_URI[sha256sum] = "68fb40049690e567ebda7b270176f5abf0d53d9fbd515fec4e43326f601119b6"
-
-S = "${WORKDIR}/${SRCNAME}-${PV}"
-
-DEFAULT_PREFERENCE = "-1"
-
-inherit setuptools
diff --git a/import-layers/meta-virtualization/recipes-devtools/python/python-webob_1.7.3.bb b/import-layers/meta-virtualization/recipes-devtools/python/python-webob_1.7.3.bb
deleted file mode 100644
index a2448be..0000000
--- a/import-layers/meta-virtualization/recipes-devtools/python/python-webob_1.7.3.bb
+++ /dev/null
@@ -1,18 +0,0 @@
-DESCRIPTION = "WSGI request and response object"
-HOMEPAGE = "http://webob.org/"
-SECTION = "devel/python"
-LICENSE = "MIT"
-LIC_FILES_CHKSUM = "file://docs/license.txt;md5=8ed3584bcc78c16da363747ccabc5af5"
-
-PYPI_PACKAGE = "WebOb"
-
-SRC_URI[md5sum] = "350028baffc508e3d23c078118e35316"
-SRC_URI[sha256sum] = "e65ca14b9f5ae5b031988ffc93f8b7f305ddfcf17a4c774ae0db47bcb3b87283"
-
-inherit setuptools pypi
-
-RDEPENDS_${PN} += " \
-	python-sphinx \
-	python-nose \
-	"
-
diff --git a/import-layers/meta-virtualization/recipes-devtools/python/python-websocket-client.inc b/import-layers/meta-virtualization/recipes-devtools/python/python-websocket-client.inc
deleted file mode 100644
index 31778c6..0000000
--- a/import-layers/meta-virtualization/recipes-devtools/python/python-websocket-client.inc
+++ /dev/null
@@ -1,11 +0,0 @@
-SUMMARY = "WebSocket client for python. hybi13 is supported."
-HOMEPAGE = "https://github.com/websocket-client/websocket-client.git"
-LICENSE = "LGPL-3.0"
-LIC_FILES_CHKSUM = "file://LICENSE;md5=18b09a20dd186af4fd60f1a08311628c"
-
-inherit pypi
-
-PYPI_PACKAGE = "websocket_client"
-
-SRC_URI[md5sum] = "73d87aa16a2212da448b30aca9c5bf3b"
-SRC_URI[sha256sum] = "15f585566e2ea7459136a632b9785aa081093064391878a448c382415e948d72"
diff --git a/import-layers/meta-virtualization/recipes-devtools/python/python-websocket-client_0.44.0.bb b/import-layers/meta-virtualization/recipes-devtools/python/python-websocket-client_0.44.0.bb
deleted file mode 100644
index 11eeb04..0000000
--- a/import-layers/meta-virtualization/recipes-devtools/python/python-websocket-client_0.44.0.bb
+++ /dev/null
@@ -1,2 +0,0 @@
-require python-websocket-client.inc
-inherit setuptools
\ No newline at end of file
diff --git a/import-layers/meta-virtualization/recipes-devtools/python/python-werkzeug_0.10.4.bb b/import-layers/meta-virtualization/recipes-devtools/python/python-werkzeug_0.10.4.bb
deleted file mode 100644
index 5f3e01f..0000000
--- a/import-layers/meta-virtualization/recipes-devtools/python/python-werkzeug_0.10.4.bb
+++ /dev/null
@@ -1,33 +0,0 @@
-DESCRIPTION = "The Swiss Army knife of Python web development"
-HOMEPAGE = "https://pypi.python.org/pypi/Werkzeug/"
-SECTION = "devel/python"
-LICENSE = "BSD-3-Clause"
-LIC_FILES_CHKSUM = "file://LICENSE;md5=a68f5361a2b2ca9fdf26b38aaecb6faa"
-
-PR = "r0"
-SRCNAME = "Werkzeug"
-
-SRC_URI = "https://pypi.python.org/packages/source/W/${SRCNAME}/${SRCNAME}-${PV}.tar.gz"
-
-SRC_URI[md5sum] = "66a488e0ac50a9ec326fe020b3083450"
-SRC_URI[sha256sum] = "9d2771e4c89be127bc4bac056ab7ceaf0e0064c723d6b6e195739c3af4fd5c1d"
-
-S = "${WORKDIR}/${SRCNAME}-${PV}"
-
-DEFAULT_PREFERENCE = "-1"
-
-inherit setuptools
-
-RDEPENDS_${PN} += "python-io \
-                   python-datetime \
-                   python-email \
-                   python-zlib \
-                   python-pkgutil \
-                   python-html \
-                   python-shell \
-                   python-pprint \
-                   python-subprocess \
-                   python-netserver"
-
-CLEANBROKEN = "1"
-
diff --git a/import-layers/meta-virtualization/recipes-devtools/python/python3-cached-property_1.3.0.bb b/import-layers/meta-virtualization/recipes-devtools/python/python3-cached-property_1.3.0.bb
deleted file mode 100644
index f01aabd..0000000
--- a/import-layers/meta-virtualization/recipes-devtools/python/python3-cached-property_1.3.0.bb
+++ /dev/null
@@ -1,9 +0,0 @@
-SUMMARY = "A decorator for caching properties in classes."
-HOMEPAGE = "https://github.com/pydanny/cached-property"
-LICENSE = "BSD-3-Clause"
-LIC_FILES_CHKSUM = "file://LICENSE;md5=db7ff60c4e14f58534201242803d8abc"
-
-inherit pypi setuptools3
-
-SRC_URI[md5sum] = "4a6039f7418007275505e355359396a8"
-SRC_URI[sha256sum] = "458e78b1c7286ece887d92c9bee829da85717994c5e3ddd253a40467f488bc81"
diff --git a/import-layers/meta-virtualization/recipes-devtools/python/python3-colorama_0.3.9.bb b/import-layers/meta-virtualization/recipes-devtools/python/python3-colorama_0.3.9.bb
deleted file mode 100644
index 458b0db..0000000
--- a/import-layers/meta-virtualization/recipes-devtools/python/python3-colorama_0.3.9.bb
+++ /dev/null
@@ -1,9 +0,0 @@
-SUMMARY = "Cross-platform colored terminal text."
-HOMEPAGE = "https://github.com/tartley/colorama"
-LICENSE = "BSD-2-Clause"
-LIC_FILES_CHKSUM = "file://LICENSE.txt;md5=14d0b64047ed8f510b51ce0495995358"
-
-inherit pypi setuptools3
-
-SRC_URI[md5sum] = "3a0e415259690f4dd7455c2683ee5850"
-SRC_URI[sha256sum] = "48eb22f4f8461b1df5734a074b57042430fb06e1d61bd1e11b078c0fe6d7a1f1"
diff --git a/import-layers/meta-virtualization/recipes-devtools/python/python3-docker-pycreds_0.2.1.bb b/import-layers/meta-virtualization/recipes-devtools/python/python3-docker-pycreds_0.2.1.bb
deleted file mode 100644
index 4038410..0000000
--- a/import-layers/meta-virtualization/recipes-devtools/python/python3-docker-pycreds_0.2.1.bb
+++ /dev/null
@@ -1,9 +0,0 @@
-SUMMARY = "Python bindings for the docker credentials store API"
-HOMEPAGE = "https://github.com/shin-/dockerpy-creds"
-LICENSE = "Apache-2.0"
-LIC_FILES_CHKSUM = "file://LICENSE;md5=3b83ef96387f14655fc854ddc3c6bd57"
-
-inherit pypi setuptools3
-
-SRC_URI[md5sum] = "0d80d5aebab771faf7e422b759c3055b"
-SRC_URI[sha256sum] = "93833a2cf280b7d8abbe1b8121530413250c6cd4ffed2c1cf085f335262f7348"
diff --git a/import-layers/meta-virtualization/recipes-devtools/python/python3-docker_2.5.1.bb b/import-layers/meta-virtualization/recipes-devtools/python/python3-docker_2.5.1.bb
deleted file mode 100644
index 341d95c..0000000
--- a/import-layers/meta-virtualization/recipes-devtools/python/python3-docker_2.5.1.bb
+++ /dev/null
@@ -1,17 +0,0 @@
-SUMMARY = "A Python library for the Docker Engine API."
-HOMEPAGE = "https://github.com/docker/docker-py"
-LICENSE = "Apache-2.0"
-LIC_FILES_CHKSUM = "file://LICENSE;md5=34f3846f940453127309b920eeb89660"
-
-inherit pypi setuptools3
-
-SRC_URI[md5sum] = "7d917152976df075e6e90ee853df641f"
-SRC_URI[sha256sum] = "b876e6909d8d2360e0540364c3a952a62847137f4674f2439320ede16d6db880"
-
-DEPENDS += "${PYTHON_PN}-pip-native"
-
-RDEPENDS_${PN} += " \
-	python3-docker-pycreds \
-	python3-requests \
-	python3-websocket-client \
-"
diff --git a/import-layers/meta-virtualization/recipes-devtools/python/python3-dockerpty_0.4.1.bb b/import-layers/meta-virtualization/recipes-devtools/python/python3-dockerpty_0.4.1.bb
deleted file mode 100644
index 31a864a..0000000
--- a/import-layers/meta-virtualization/recipes-devtools/python/python3-dockerpty_0.4.1.bb
+++ /dev/null
@@ -1,9 +0,0 @@
-SUMMARY = "Python library to use the pseudo-tty of a docker container"
-HOMEPAGE = "https://github.com/d11wtq/dockerpty"
-LICENSE = "Apache-2.0"
-LIC_FILES_CHKSUM = "file://LICENSE.txt;md5=3b83ef96387f14655fc854ddc3c6bd57"
-
-inherit pypi setuptools3
-
-SRC_URI[md5sum] = "028bacb34536f3ee6a2ccd668c27e8e4"
-SRC_URI[sha256sum] = "69a9d69d573a0daa31bcd1c0774eeed5c15c295fe719c61aca550ed1393156ce"
diff --git a/import-layers/meta-virtualization/recipes-devtools/python/python3-docopt_0.6.2.bb b/import-layers/meta-virtualization/recipes-devtools/python/python3-docopt_0.6.2.bb
deleted file mode 100644
index 4637448..0000000
--- a/import-layers/meta-virtualization/recipes-devtools/python/python3-docopt_0.6.2.bb
+++ /dev/null
@@ -1,2 +0,0 @@
-inherit setuptools3
-require python-docopt.inc
diff --git a/import-layers/meta-virtualization/recipes-devtools/python/python3-texttable_0.9.1.bb b/import-layers/meta-virtualization/recipes-devtools/python/python3-texttable_0.9.1.bb
deleted file mode 100644
index 25e402f..0000000
--- a/import-layers/meta-virtualization/recipes-devtools/python/python3-texttable_0.9.1.bb
+++ /dev/null
@@ -1,9 +0,0 @@
-SUMMARY = "module for creating simple ASCII tables"
-HOMEPAGE = "https://github.com/foutaise/texttable/"
-LICENSE = "LGPL-3.0"
-LIC_FILES_CHKSUM = "file://LICENSE;md5=e6a600fd5e1d9cbde2d983680233ad02"
-
-inherit pypi setuptools3
-
-SRC_URI[md5sum] = "a712b5a5464d51c5fc43c64d9d2cd0de"
-SRC_URI[sha256sum] = "119041773ff03596b56392532f9315cb3a3116e404fd6f36e76a7dc088d95c79"
diff --git a/import-layers/meta-virtualization/recipes-devtools/python/python3-websocket-client_0.44.0.bb b/import-layers/meta-virtualization/recipes-devtools/python/python3-websocket-client_0.44.0.bb
deleted file mode 100644
index 473e31f..0000000
--- a/import-layers/meta-virtualization/recipes-devtools/python/python3-websocket-client_0.44.0.bb
+++ /dev/null
@@ -1,2 +0,0 @@
-require python-websocket-client.inc
-inherit setuptools3
\ No newline at end of file
diff --git a/import-layers/meta-virtualization/recipes-devtools/python/python_2.%.bbappend b/import-layers/meta-virtualization/recipes-devtools/python/python_2.%.bbappend
deleted file mode 100644
index 55301c7..0000000
--- a/import-layers/meta-virtualization/recipes-devtools/python/python_2.%.bbappend
+++ /dev/null
@@ -1,8 +0,0 @@
-FILESEXTRAPATHS_prepend := "${THISDIR}/${PN}:"
-
-DEPENDS += " ncurses"
-
-do_compile_prepend() {
-	export LIBRARY_PATH=${STAGING_DIR_TARGET}/lib
-}
-
diff --git a/import-layers/meta-virtualization/recipes-extended/dev86/dev86_0.16.20.bb b/import-layers/meta-virtualization/recipes-extended/dev86/dev86_0.16.20.bb
deleted file mode 100644
index 38dbf8d..0000000
--- a/import-layers/meta-virtualization/recipes-extended/dev86/dev86_0.16.20.bb
+++ /dev/null
@@ -1,38 +0,0 @@
-DESCRIPTION = "This is a cross development C compiler, assembler and linker environment for the production of 8086 executables (Optionally MSDOS COM)"
-HOMEPAGE = "http://www.debath.co.uk/dev86/"
-LICENSE = "GPLv2"
-LIC_FILES_CHKSUM = "file://COPYING;md5=8ca43cbc842c2336e835926c2166c28b"
-SECTION = "console/tools"
-PR="r0"
-
-SRC_URI="http://v3.sk/~lkundrak/dev86/archive/Dev86src-${PV}.tar.gz"
-
-SRC_URI[md5sum] = "567cf460d132f9d8775dd95f9208e49a"
-SRC_URI[sha256sum] = "61817a378c8c8ba65f36c6792d457a305dc4eedae8cdc8b6233bf2bb28e5fe8d"
-
-S = "${WORKDIR}/dev86-${PV}"
-
-BBCLASSEXTEND = "native"
-EXTRA_OEMAKE = "VERSION=${PV} PREFIX=${prefix} DIST=${D}"
-
-do_compile() {
-
-	oe_runmake make.fil
-	oe_runmake -f make.fil bcc86 as86 ld86
-
-}
-
-do_install() {
-
-	if [ "${prefix}"=="" ] ; then
-		export prefix=/usr
-	fi
-
-	oe_runmake install-bcc
-	ln -s ../lib/bcc/bcc-cpp ${D}${prefix}/bin/bcc-cpp
-	ln -s ../lib/bcc/bcc-cc1 ${D}${prefix}/bin/bcc-cc1
-
-}
-COMPATIBLE_HOST = "(i.86|x86_64).*-linux"
-FILES_${PN} += "${libdir}/bcc"
-INSANE_SKIP_${PN} = "already-stripped"
diff --git a/import-layers/meta-virtualization/recipes-extended/diod/diod_1.0.24.bb b/import-layers/meta-virtualization/recipes-extended/diod/diod_1.0.24.bb
deleted file mode 100644
index a4d159a..0000000
--- a/import-layers/meta-virtualization/recipes-extended/diod/diod_1.0.24.bb
+++ /dev/null
@@ -1,32 +0,0 @@
-SUMMARY = "Diod is a user space server for the kernel v9fs client."
-DESCRIPTION = "\
-Diod is a user space server for the kernel v9fs client (9p.ko, 9pnet.ko). \
-Although the kernel client supports several 9P variants, diod only supports \
-9P2000.L, and only in its feature-complete form, as it appeared in 2.6.38."
-SECTION = "console/network"
-
-LICENSE = "GPLv2"
-LIC_FILES_CHKSUM = "file://COPYING;md5=59530bdf33659b29e73d4adb9f9f6552"
-
-PV = "1.0.24+git${SRCPV}"
-SRCREV = "0ea3fe3d829b5085307cd27a512708d99ef48199"
-SRC_URI = "git://github.com/chaos/diod.git;protocol=git \
-           file://diod \
-           file://diod.conf \
-           file://0001-build-allow-builds-to-work-with-separate-build-dir.patch \
-           file://0002-auto.diod.in-remove-bashisms.patch \
-          "
-DEPENDS = "libcap ncurses tcp-wrappers lua"
-
-S = "${WORKDIR}/git"
-
-inherit autotools systemd
-
-do_install_append () {
-        # install our init based on start-stop-daemon
-        install -D -m 0755 ${WORKDIR}/diod ${D}${sysconfdir}/init.d/diod
-        # install a real(not commented) configuration file for diod
-        install -m 0644 ${WORKDIR}/diod.conf ${D}${sysconfdir}/diod.conf
-}
-
-FILES_${PN} += "${systemd_unitdir}"
diff --git a/import-layers/meta-virtualization/recipes-extended/diod/files/0001-build-allow-builds-to-work-with-separate-build-dir.patch b/import-layers/meta-virtualization/recipes-extended/diod/files/0001-build-allow-builds-to-work-with-separate-build-dir.patch
deleted file mode 100644
index f40e0eb..0000000
--- a/import-layers/meta-virtualization/recipes-extended/diod/files/0001-build-allow-builds-to-work-with-separate-build-dir.patch
+++ /dev/null
@@ -1,126 +0,0 @@
-From 43403468298ef4167baa5d84de2ee2eaf7f4007a Mon Sep 17 00:00:00 2001
-From: Mark Asselstine <mark.asselstine@windriver.com>
-Date: Fri, 9 Jan 2015 18:34:04 +0000
-Subject: [PATCH 1/2] build: allow builds to work with separate build dir
-
-Remove assumptions in include paths that assume the build
-is happening in the source directories.
-
-Upstream-Status: Inappropriate [embedded specific]
-
-Signed-off-by: Mark Asselstine <mark.asselstine@windriver.com>
----
- diod/Makefile.am              | 2 +-
- libdiod/Makefile.am           | 2 +-
- liblsd/Makefile.am            | 2 +-
- libnpclient/Makefile.am       | 2 +-
- scripts/Makefile.am           | 6 +++---
- tests/kern/dbench/Makefile.am | 4 ++--
- utils/Makefile.am             | 2 +-
- 7 files changed, 10 insertions(+), 10 deletions(-)
-
-diff --git a/diod/Makefile.am b/diod/Makefile.am
-index 7644be7..fdaf130 100644
---- a/diod/Makefile.am
-+++ b/diod/Makefile.am
-@@ -1,7 +1,7 @@
- AM_CFLAGS = @GCCWARN@
- 
- AM_CPPFLAGS = \
--	-I../libnpfs -I../liblsd -I../libdiod
-+	-I$(srcdir)/../libnpfs -I$(srcdir)/../liblsd -I$(srcdir)/../libdiod
- 
- sbin_PROGRAMS = diod
- 
-diff --git a/libdiod/Makefile.am b/libdiod/Makefile.am
-index 4810e14..6905cdd 100644
---- a/libdiod/Makefile.am
-+++ b/libdiod/Makefile.am
-@@ -1,7 +1,7 @@
- AM_CFLAGS = @GCCWARN@
- 
- AM_CPPFLAGS = \
--	-I../libnpfs -I../libnpclient -I../liblsd
-+	-I$(srcdir)/../libnpfs -I$(srcdir)/../libnpclient -I$(srcdir)/../liblsd
- 
- noinst_LIBRARIES = libdiod.a
- 
-diff --git a/liblsd/Makefile.am b/liblsd/Makefile.am
-index c3e5658..7e18bf8 100644
---- a/liblsd/Makefile.am
-+++ b/liblsd/Makefile.am
-@@ -1,6 +1,6 @@
- AM_CFLAGS = @GCCWARN@
- 
--AM_CPPFLAGS = -I../libdiod
-+AM_CPPFLAGS = -I$(srcdir)/../libdiod
- 
- noinst_LIBRARIES = liblsd.a
- 
-diff --git a/libnpclient/Makefile.am b/libnpclient/Makefile.am
-index 5305df9..cbaf266 100644
---- a/libnpclient/Makefile.am
-+++ b/libnpclient/Makefile.am
-@@ -1,7 +1,7 @@
- AM_CFLAGS = @GCCWARN@
- 
- AM_CPPFLAGS = \
--	-I../libnpfs
-+	-I$(srcdir)/../libnpfs
- 
- noinst_LIBRARIES = libnpclient.a
- 
-diff --git a/scripts/Makefile.am b/scripts/Makefile.am
-index 51c24a3..2aba728 100644
---- a/scripts/Makefile.am
-+++ b/scripts/Makefile.am
-@@ -1,9 +1,9 @@
--systemddir=$(sysconfdir)/systemd/system
-+systemddir=/lib/systemd/system
- 
- install-data-local:
--	$(top_srcdir)/config/install-sh -m 755 $(srcdir)/auto.diod \
-+	$(top_srcdir)/config/install-sh -m 755 ./auto.diod \
- 		$(DESTDIR)$(sysconfdir)/auto.diod
--	$(top_srcdir)/config/install-sh -m 755 $(srcdir)/diod.service \
-+	$(top_srcdir)/config/install-sh -m 644 ./diod.service \
- 		$(DESTDIR)$(systemddir)/diod.service
- 
- uninstall-local:
-diff --git a/tests/kern/dbench/Makefile.am b/tests/kern/dbench/Makefile.am
-index e0cdefa..1704f9f 100644
---- a/tests/kern/dbench/Makefile.am
-+++ b/tests/kern/dbench/Makefile.am
-@@ -2,7 +2,7 @@ AM_CFLAGS = -w
- 
- # VERSION=4.00
- 
--AM_CPPFLAGS = -DDATADIR=\"$(X_DATADIR)\"
-+AM_CPPFLAGS = -I. -DDATADIR=\"$(X_DATADIR)\"
- 
- LDADD = $(LIBPOPT)
- 
-@@ -25,6 +25,6 @@ BUILT_SOURCES = proto.h
- CLEANFILES = proto.h
- 
- proto.h: $(dbench_SOURCES) mkproto.pl
--	perl mkproto.pl $(dbench_SOURCES) > proto.h
-+	$(srcdir)/mkproto.pl $(patsubst %,$(srcdir),$(dbench_SOURCES)) > proto.h
- 
- EXTRA_DIST = mkproto.pl
-diff --git a/utils/Makefile.am b/utils/Makefile.am
-index 169b6c4..91d571d 100644
---- a/utils/Makefile.am
-+++ b/utils/Makefile.am
-@@ -1,7 +1,7 @@
- AM_CFLAGS = @GCCWARN@
- 
- AM_CPPFLAGS = \
--	-I../libnpfs -I../liblsd -I../libdiod -I../libnpclient
-+	-I$(srcdir)/../libnpfs -I$(srcdir)/../liblsd -I$(srcdir)/../libdiod -I$(srcdir)/../libnpclient
- 
- sbin_PROGRAMS = diodmount diodcat dtop diodload diodls diodshowmount dioddate
- 
--- 
-2.11.0
-
diff --git a/import-layers/meta-virtualization/recipes-extended/diod/files/0002-auto.diod.in-remove-bashisms.patch b/import-layers/meta-virtualization/recipes-extended/diod/files/0002-auto.diod.in-remove-bashisms.patch
deleted file mode 100644
index 65d6ff6..0000000
--- a/import-layers/meta-virtualization/recipes-extended/diod/files/0002-auto.diod.in-remove-bashisms.patch
+++ /dev/null
@@ -1,47 +0,0 @@
-From 5a9e09dc5de833db11607530351cd87cecbfd17e Mon Sep 17 00:00:00 2001
-From: Roy Li <rongqing.li@windriver.com>
-Date: Thu, 22 Jun 2017 06:32:30 +0000
-Subject: [PATCH 2/2] auto.diod.in: remove bashisms
-
-Upstream-Status: Pending
-
-Signed-off-by: Roy Li <rongqing.li@windriver.com>
----
- scripts/auto.diod.in | 14 +++++++-------
- 1 file changed, 7 insertions(+), 7 deletions(-)
-
-diff --git a/scripts/auto.diod.in b/scripts/auto.diod.in
-index f63e004..4d5fc3a 100755
---- a/scripts/auto.diod.in
-+++ b/scripts/auto.diod.in
-@@ -1,4 +1,4 @@
--#!/bin/bash
-+#!/bin/sh
- #
- # auto.diod - executable automounter map for diod file systems
- #
-@@ -41,15 +41,15 @@ dcatopts="${DIOD_TIMEOUT:+-t $DIOD_TIMEOUT}"
- for server in $DIOD_SERVERS; do
-     $DIOD_DIODCAT -s $server $dcatopts exports | awk '{print $1}' |\
-     while read path; do
--        if [ "$path" == "/" ]; then
--            if [ "$key" == "ROOT" ]; then
-+        if [ "$path" = "/" ]; then
-+            if [ "$key" = "ROOT" ]; then
-                 echo "$prefix $server:$path"
-                 exit 0
-             fi
--        elif [ "$key" == "$(echo $path|sed -e's/^\///' -e's/\//./g')" ] \
--          || [ "$key" == "$(echo $path|sed -e's/^\///' -e's/\//_/g')" ] \
--          || [ "$key" == "$(echo $path|sed -e's/^\///' -e's/\//-/g')" ] \
--          || [ "$key" == "$(basename $path)" ]; then
-+        elif [ "$key" = "$(echo $path|sed -e's/^\///' -e's/\//./g')" ] \
-+          || [ "$key" = "$(echo $path|sed -e's/^\///' -e's/\//_/g')" ] \
-+          || [ "$key" = "$(echo $path|sed -e's/^\///' -e's/\//-/g')" ] \
-+          || [ "$key" = "$(basename $path)" ]; then
-             echo "$prefix $server:$path"
-             exit 0
-         fi
--- 
-2.11.0
-
diff --git a/import-layers/meta-virtualization/recipes-extended/diod/files/diod b/import-layers/meta-virtualization/recipes-extended/diod/files/diod
deleted file mode 100644
index cd0bf98..0000000
--- a/import-layers/meta-virtualization/recipes-extended/diod/files/diod
+++ /dev/null
@@ -1,75 +0,0 @@
-#!/bin/sh
-#
-# chkconfig: 35 20 80
-# description: Distributed Input Output Daemon 
-#
-
-# Get function from functions library
-. /etc/init.d/functions
-
-BASE=diod
-PIDFILE=/var/run/$BASE.pid
-PID=`test -f $PIDFILE && cat $PIDFILE`
-DIOD_BIN=/usr/sbin/$BASE
-DIOD_CONF=/etc/$BASE.conf
-DIOD_OPTS="-c $DIOD_CONF"
-DIOD="$DIOD_BIN $DIOD_OPTS"
-RETVAL=0
-
-# Start the service $BASE
-start()
-{
-       # Force creation of the log directory even on a tmpfs /var/log.
-       mkdir -p /var/log/diod
-
-       start-stop-daemon --stop --test --quiet --pidfile $PIDFILE
-       status=$?
-       if [ $status -eq 0 ]; then
-           echo "diod service is already running with pid $PID"
-           exit 1
-       else
-           echo -n "Starting $BASE:"
-           start-stop-daemon --start --pidfile $PIDFILE \
-	     --exec $DIOD_BIN -- $DIOD_OPTS
-           RETVAL=$?
-           echo
-           [ $RETVAL -ne 0 ] && exit $RETVAL
-       fi
-}
-
-# Stop the service $BASE
-stop()
-{
-    echo -n "Stopping $BASE:"
-    start-stop-daemon --stop --test --quiet --pidfile $PIDFILE
-    status=$?
-    if [ $status -eq 0 ]; then
-        start-stop-daemon --stop --quiet --pidfile $PIDFILE
-        [ -w $PIDFILE ] && rm -f $PIDFILE
-    else
-	start-stop-daemon --stop --quiet --name $BASE
-    fi
-}
-
-
-### service arguments ###
-case $1 in
-    start)
-        start
-        ;;
-    stop)
-        stop
-        ;;
-    status)
-        status $BASE
-        ;;
-    restart | force-reload)
-        $0 stop
-        $0 start
-        ;;
-    *)
-        echo "Usage: $0 {start|stop|status|restart}."
-        exit 1
-esac
-
-exit 0
diff --git a/import-layers/meta-virtualization/recipes-extended/diod/files/diod.conf b/import-layers/meta-virtualization/recipes-extended/diod/files/diod.conf
deleted file mode 100644
index e97743a..0000000
--- a/import-layers/meta-virtualization/recipes-extended/diod/files/diod.conf
+++ /dev/null
@@ -1,15 +0,0 @@
---
--- /etc/diod.conf - config file for diod distributed I/O daemon
---
--- NOTE: This config file is a lua script that diod runs, then extracts
--- the value of certain globally defined variables.  See diod.conf(5).
-
-listen = { "0.0.0.0:564" }
-nwthreads = 16
-auth_required = 1
-logdest = "syslog:daemon:err"
-
-exports = { "/g/g0", "/g/g10" }
-
-allsquash = 0
-squashuser = "nobody"
diff --git a/import-layers/meta-virtualization/recipes-extended/hyperstart/hyperstart_git.bb b/import-layers/meta-virtualization/recipes-extended/hyperstart/hyperstart_git.bb
deleted file mode 100644
index 0297477..0000000
--- a/import-layers/meta-virtualization/recipes-extended/hyperstart/hyperstart_git.bb
+++ /dev/null
@@ -1,25 +0,0 @@
-SUMMARY = "The tiny Init service for HyperContainer"
-DESCRIPTION = "The init Task for HyperContainer"
-
-LICENSE = "Apache-2"
-LIC_FILES_CHKSUM = "file://LICENSE;md5=fa818a259cbed7ce8bc2a22d35a464fc"
-
-inherit autotools-brokensep 
-
-SRC_URI = "git://github.com/hyperhq/hyperstart.git"
-
-SRCREV = "ad48a3230836f59ada163659cde151a37522068b"
-PV = "v0.2+git${SRCREV}"
-
-S = "${WORKDIR}/git"
-
-CACHED_CONFIGUREVARS = "ac_cv_file__usr_include_linux_vm_sockets_h=true"
-
-do_install() {
-	install -d ${D}/var/lib/hyper/
-
-        install -m644 ${S}/build/hyper-initrd.img ${D}/var/lib/hyper/
-        install -m644 ${S}/build/arch/x86_64/kernel ${D}/var/lib/hyper/
-}
-
-FILES_${PN} += "/var/lib/hyper"
diff --git a/import-layers/meta-virtualization/recipes-extended/iasl/iasl/Make-CC-definition-conditional.patch b/import-layers/meta-virtualization/recipes-extended/iasl/iasl/Make-CC-definition-conditional.patch
deleted file mode 100644
index f69a36c..0000000
--- a/import-layers/meta-virtualization/recipes-extended/iasl/iasl/Make-CC-definition-conditional.patch
+++ /dev/null
@@ -1,29 +0,0 @@
-[PATCH] Make CC definition conditional
-
-Upstream-Status: pending
-
-By hardcoding CC's definition to gcc, make this packages unable to
-cross-compile. the -e options of make can not override the CC since
-it is not defined in Makefile, but in Makefile.config
-
-Signed-off-by: Roy.Li <rongqing.li@windriver.com>
----
- generate/unix/Makefile.config | 4 ++--
- 1 file changed, 2 insertions(+), 2 deletions(-)
-
-diff --git a/generate/unix/Makefile.config b/generate/unix/Makefile.config
-index 8d41399..72d597d 100644
---- a/generate/unix/Makefile.config
-+++ b/generate/unix/Makefile.config
-@@ -35,7 +35,7 @@
- .SUFFIXES :
- PROGS = acpibin acpidump acpiexamples acpiexec acpihelp acpinames acpisrc acpixtract iasl
- HOST ?= _CYGWIN
--CC =    gcc
-+CC ?=    gcc
- 
- #
- # Common defines
--- 
-1.9.1
-
diff --git a/import-layers/meta-virtualization/recipes-extended/iasl/iasl/iasl.1 b/import-layers/meta-virtualization/recipes-extended/iasl/iasl/iasl.1
deleted file mode 100644
index 000a3b8..0000000
--- a/import-layers/meta-virtualization/recipes-extended/iasl/iasl/iasl.1
+++ /dev/null
@@ -1,135 +0,0 @@
-.\" First parameter, NAME, should be all caps
-.\" Second parameter, SECTION, should be 1-8, maybe w/ subsection
-.\" other parameters are allowed: see man(7), man(1)
-.TH IASL 1 "October 14, 2005"
-.\" Please adjust this date whenever revising the manpage.
-.\"
-.\" Some roff macros, for reference:
-.\" .nh        disable hyphenation
-.\" .hy        enable hyphenation
-.\" .ad l      left justify
-.\" .ad b      justify to both left and right margins
-.\" .nf        disable filling
-.\" .fi        enable filling
-.\" .br        insert line break
-.\" .sp <n>    insert n+1 empty lines
-.\" for manpage-specific macros, see man(7)
-.SH NAME
-iasl \- ACPI Source Language compiler/decompiler
-.SH SYNOPSIS
-.B iasl
-.RI [ options ]
-.RI [ "input file" ]
-.SH DESCRIPTION
-This manual page documents briefly the
-.B iasl
-command. The option list is taken from the iasl interactive help.
-.PP
-.\" TeX users may be more comfortable with the \fB<whatever>\fP and
-.\" \fI<whatever>\fP escape sequences to invode bold face and italics, 
-.\" respectively.
-.B iasl
-is an ASL compiler and decompiler.
-
-.SH OPTIONS
-
-.PP
-.SS General Output
-.TP
-.B \-p <prefix>
-Specify filename prefix for all output files (including .aml)
-.TP
-.B \-vi
-Less verbose errors and warnings for use with IDEs
-.TP
-.B \-vo
-Enable optimization comments
-.TP
-.B \-vr
-Disable remarks
-.TP
-.B \-vs
-Disable signon
-
-.PP
-.SS AML Output Files
-.TP
-.B \-s<a|c>
-Create AML in assembler or C source file (*.asm or *.c)
-.TP
-.B \-i<a|c>
-Create assembler or C include file (*.inc or *.h)
-.TP
-.B \-t<a|c>
-Create AML in assembler or C hex table (*.hex)
-
-.PP
-.SS AML Code Generation
-.TP
-.B \-oa
-Disable all optimizations (compatibility mode)
-.TP
-.B \-of
-Disable constant folding
-.TP
-.B \-oi
-Disable integer optimization to Zero/One/Ones
-.TP
-.B \-on
-Disable named reference string optimization
-.TP
-.B \-r<Revision>
-Override table header Revision (1-255)
-
-.PP
-.SS Listings
-.TP
-.B \-l
-Create mixed listing file (ASL source and AML) (*.lst)
-.TP
-.B \-ln
-Create namespace file (*.nsp)
-.TP
-.B \-ls
-Create combined source file (expanded includes) (*.src)
-
-.PP
-.SS AML Disassembler
-.TP
-.B \-d  [file]
-Disassemble AML to ASL source code file (*.dsl)
-.TP
-.B \-dc [file]
-Disassemble AML and immediately compile it
-.br
-(Obtain DSDT from current system if no input file)
-.TP
-.B \-e
-Generate External() statements for unresolved symbols
-.TP
-.B \-g
-Get ACPI tables and write to files (*.dat)
-
-.PP
-.SS Miscellaneous
-.TP
-.B \-a
-Verify source file is entirely ASCII text (0x00-0x7F)
-
-.PP
-.SS Help
-.TP
-.B \-h
-Additional help and compiler debug options
-.TP
-.B \-hc
-Display operators allowed in constant expressions
-.TP
-.B \-hr
-Display ACPI reserved method names
-
-.SH AUTHOR
-iasl was written by Robert Moore <robert.moore@intel.com>.
-.PP
-This manual page was written by Mattia Dongili <malattia@debian.org>,
-for the Debian project (but may be used by others).
diff --git a/import-layers/meta-virtualization/recipes-extended/iasl/iasl_20160527.bb b/import-layers/meta-virtualization/recipes-extended/iasl/iasl_20160527.bb
deleted file mode 100644
index 62e83c4..0000000
--- a/import-layers/meta-virtualization/recipes-extended/iasl/iasl_20160527.bb
+++ /dev/null
@@ -1,36 +0,0 @@
-SUMMARY = "Intel ASL compiler/decompiler"
-DESCRIPTION = "This is a cross development C compiler, assembler and linker environment for the production of 8086 executables (Optionally MSDOS COM)"
-HOMEPAGE = "http://www.acpica.org/"
-LICENSE = "Intel-ACPI"
-LIC_FILES_CHKSUM = "file://source/compiler/aslcompiler.h;beginline=7;endline=114;md5=09f82edcd148ab4c8aa554bc3e9d0676"
-SECTION = "console/tools"
-
-DEPENDS = "bison-native flex-native"
-
-SRC_URI = "https://www.acpica.org/sites/acpica/files/acpica-unix-${PV}.tar.gz \
-           file://iasl.1 \
-           file://Make-CC-definition-conditional.patch \
-"
-
-SRC_URI[md5sum] = "be677fc358de9dadc036e1ea678a101b"
-SRC_URI[sha256sum] = "6b681732624de1eb58b2bcf1c7ef0744ba14ed35fcaa534d4421574782fbb848"
-
-S = "${WORKDIR}/acpica-unix-${PV}/"
-
-BBCLASSEXTEND = "native"
-CFLAGS += "-D_LINUX -DACPI_ASL_COMPILER -I../include -I../compiler"
-
-COMPATIBLE_HOST = "(x86_64.*|i.86.*)-linux"
-
-# By setting NOOPT we suppress forcing -O2 and setting _FORTIFY_SOURCE=2.  Let the
-# optimization and security cflags set them.
-#
-do_compile() {
-        oe_runmake iasl NOOPT=TRUE NOFORTIFY=TRUE
-}
-
-do_install() {
-	install -d ${D}${bindir} ${D}${mandir}/man1
-	install -m 0755 ${S}/generate/unix/bin/iasl ${D}${bindir}
-	install -m 0644 ${WORKDIR}/iasl.1 ${D}${mandir}/man1
-}
diff --git a/import-layers/meta-virtualization/recipes-extended/images/cloud-image-compute.bb b/import-layers/meta-virtualization/recipes-extended/images/cloud-image-compute.bb
deleted file mode 100644
index 197624f..0000000
--- a/import-layers/meta-virtualization/recipes-extended/images/cloud-image-compute.bb
+++ /dev/null
@@ -1,14 +0,0 @@
-IMAGE_FEATURES += "ssh-server-openssh"
-EXTRA_IMAGE_FEATURES = "tools-debug debug-tweaks"
-
-IMAGE_INSTALL = "\
-    ${CORE_IMAGE_BASE_INSTALL} \
-    packagegroup-core-basic \
-    openvswitch \
-    libvirt \
-    openflow \
-    "
-
-inherit core-image
-
-IMAGE_FSTYPES = "tar.gz"
diff --git a/import-layers/meta-virtualization/recipes-extended/images/cloud-image-controller.bb b/import-layers/meta-virtualization/recipes-extended/images/cloud-image-controller.bb
deleted file mode 100644
index c816545..0000000
--- a/import-layers/meta-virtualization/recipes-extended/images/cloud-image-controller.bb
+++ /dev/null
@@ -1,32 +0,0 @@
-IMAGE_FEATURES += "ssh-server-openssh package-management"
-EXTRA_IMAGE_FEATURES = "tools-debug debug-tweaks"
-
-IMAGE_INSTALL = "\
-    ${CORE_IMAGE_BASE_INSTALL} \
-    packagegroup-core-basic \
-    openvswitch \
-    openvswitch-controller \
-    openvswitch-switch \
-    openvswitch-brcompat \
-    criu \
-    libvirt \
-    libvirt-libvirtd \
-    libvirt-python \
-    libvirt-virsh \    
-    openflow \
-    qemu \   
-    kernel-modules \
-    dhcp-client \
-    perl-modules \
-    grub \
-    mysql5 \
-    python-twisted \ 
-    python-lxml \
-    "
-
-inherit core-image
-
-IMAGE_FSTYPES = "wic.vmdk tar.gz"
-
-# Ensure extra space for guest images
-#IMAGE_ROOTFS_EXTRA_SPACE = "41943040"
diff --git a/import-layers/meta-virtualization/recipes-extended/images/cloud-image-guest.bb b/import-layers/meta-virtualization/recipes-extended/images/cloud-image-guest.bb
deleted file mode 100644
index 2957506..0000000
--- a/import-layers/meta-virtualization/recipes-extended/images/cloud-image-guest.bb
+++ /dev/null
@@ -1,16 +0,0 @@
-IMAGE_FEATURES += "ssh-server-openssh package-management"
-EXTRA_IMAGE_FEATURES = "tools-debug debug-tweaks"
-
-IMAGE_INSTALL = "\
-    ${CORE_IMAGE_BASE_INSTALL} \
-    packagegroup-core-basic \
-    openflow \
-    qemu \   
-    kernel-modules \
-    tcpdump \
-    dhcp-client \
-    "
-
-inherit core-image
-
-IMAGE_FSTYPES += "wic.vmdk"
diff --git a/import-layers/meta-virtualization/recipes-extended/images/kvm-image-minimal.bb b/import-layers/meta-virtualization/recipes-extended/images/kvm-image-minimal.bb
deleted file mode 100644
index b28cc30..0000000
--- a/import-layers/meta-virtualization/recipes-extended/images/kvm-image-minimal.bb
+++ /dev/null
@@ -1,22 +0,0 @@
-DESCRIPTION = "A minimal kvm image"
-
-IMAGE_INSTALL = " \
-    packagegroup-core-boot \
-    qemu \
-    libvirt \
-    libvirt-libvirtd \
-    libvirt-virsh \
-    kernel-module-kvm \
-    kernel-module-kvm-intel \
-    kernel-module-kvm-amd \
-    "
-
-IMAGE_FEATURES += "ssh-server-openssh"
-
-IMAGE_LINGUAS = " "
-
-LICENSE = "MIT"
-
-inherit core-image
-
-IMAGE_ROOTFS_SIZE = "8192"
diff --git a/import-layers/meta-virtualization/recipes-extended/images/xen-guest-image-minimal.bb b/import-layers/meta-virtualization/recipes-extended/images/xen-guest-image-minimal.bb
deleted file mode 100644
index d311eae..0000000
--- a/import-layers/meta-virtualization/recipes-extended/images/xen-guest-image-minimal.bb
+++ /dev/null
@@ -1,21 +0,0 @@
-DESCRIPTION = "A Xen guest image."
-
-inherit core-image distro_features_check
-
-IMAGE_INSTALL += " \
-    packagegroup-core-boot \
-    ${@bb.utils.contains('MACHINE_FEATURES', 'acpi', 'kernel-module-xen-acpi-processor', '', d)} \
-    "
-
-IMAGE_INSTALL += "${@bb.utils.contains('IMAGE_FEATURES', 'x11', ' xf86-video-fbdev', '', d)}"
-
-# Install xf86-video-vesa on x86 platforms.
-IMAGE_INSTALL_append_x86-64 = "${@bb.utils.contains('IMAGE_FEATURES', 'x11', ' xf86-video-vesa', '', d)}"
-IMAGE_INSTALL_append_x86    = "${@bb.utils.contains('IMAGE_FEATURES', 'x11', ' xf86-video-vesa', '', d)}"
-
-REQUIRED_DISTRO_FEATURES += "${@bb.utils.contains('IMAGE_FEATURES', 'x11', ' x11', '', d)} xen"
-
-LICENSE = "MIT"
-
-# Send console messages to xen console
-APPEND += "console=hvc0"
diff --git a/import-layers/meta-virtualization/recipes-extended/images/xen-image-minimal.bb b/import-layers/meta-virtualization/recipes-extended/images/xen-image-minimal.bb
deleted file mode 100644
index c39d378..0000000
--- a/import-layers/meta-virtualization/recipes-extended/images/xen-image-minimal.bb
+++ /dev/null
@@ -1,66 +0,0 @@
-DESCRIPTION = "A minimal xen image"
-
-INITRD_IMAGE = "core-image-minimal-initramfs"
-
-IMAGE_INSTALL += " \
-    packagegroup-core-boot \
-    packagegroup-core-ssh-openssh \
-    ${@bb.utils.contains('MACHINE_FEATURES', 'acpi', 'kernel-module-xen-acpi-processor', '', d)} \
-    kernel-module-xen-blkback \
-    kernel-module-xen-gntalloc \
-    kernel-module-xen-gntdev \
-    kernel-module-xen-netback \
-    ${@bb.utils.contains('MACHINE_FEATURES', 'pci', "${XEN_PCIBACK_MODULE}", '', d)} \
-    kernel-module-xen-wdt \
-    xen-base \
-    qemu \
-    "
-
-# Linux kernel option CONFIG_XEN_PCIDEV_BACKEND depends on X86
-XEN_PCIBACK_MODULE = ""
-XEN_PCIBACK_MODULE_x86    = "kernel-module-xen-pciback"
-XEN_PCIBACK_MODULE_x86-64 = "kernel-module-xen-pciback"
-
-LICENSE = "MIT"
-
-inherit core-image
-
-do_check_xen_state() {
-    if [ "${@bb.utils.contains('DISTRO_FEATURES', 'xen', ' yes', 'no', d)}" = "no" ]; then
-        die "DISTRO_FEATURES does not contain 'xen'"
-    fi
-}
-
-addtask check_xen_state before do_rootfs
-
-syslinux_iso_populate_append() {
-	install -m 0444 ${STAGING_DATADIR}/syslinux/libcom32.c32 ${ISODIR}${ISOLINUXDIR}
-	install -m 0444 ${STAGING_DATADIR}/syslinux/mboot.c32 ${ISODIR}${ISOLINUXDIR}
-}
-
-syslinux_hddimg_populate_append() {
-	install -m 0444 ${STAGING_DATADIR}/syslinux/libcom32.c32 ${HDDDIR}${SYSLINUXDIR}
-	install -m 0444 ${STAGING_DATADIR}/syslinux/mboot.c32 ${HDDDIR}${SYSLINUXDIR}
-}
-
-grubefi_populate_append() {
-	install -m 0644 ${DEPLOY_DIR_IMAGE}/xen-${MACHINE}.gz ${DEST}${EFIDIR}/xen.gz
-}
-
-syslinux_populate_append() {
-	install -m 0644 ${DEPLOY_DIR_IMAGE}/xen-${MACHINE}.gz ${DEST}/xen.gz
-}
-
-SYSLINUX_XEN_ARGS ?= "loglvl=all guest_loglvl=all console=com1,vga com1=115200,8n1"
-SYSLINUX_KERNEL_ARGS ?= "ramdisk_size=32768 root=/dev/ram0 rw console=hvc0 earlyprintk=xen console=tty0 panic=10 LABEL=boot debugshell=5"
-
-build_syslinux_cfg () {
-	echo "ALLOWOPTIONS 1" > ${SYSLINUX_CFG}
-	echo "DEFAULT boot" >> ${SYSLINUX_CFG}
-	echo "TIMEOUT 10" >> ${SYSLINUX_CFG}
-	echo "PROMPT 1" >> ${SYSLINUX_CFG}
-	echo "LABEL boot" >> ${SYSLINUX_CFG}
-	echo "  KERNEL mboot.c32" >> ${SYSLINUX_CFG}
-	echo "  APPEND /xen.gz ${SYSLINUX_XEN_ARGS} --- /vmlinuz ${SYSLINUX_KERNEL_ARGS} --- /initrd" >> ${SYSLINUX_CFG}
-}
-
diff --git a/import-layers/meta-virtualization/recipes-extended/iptables/iptables-meta-virtualization.inc b/import-layers/meta-virtualization/recipes-extended/iptables/iptables-meta-virtualization.inc
deleted file mode 100644
index 8fd521c..0000000
--- a/import-layers/meta-virtualization/recipes-extended/iptables/iptables-meta-virtualization.inc
+++ /dev/null
@@ -1,19 +0,0 @@
-RRECOMMENDS_${PN} += "kernel-module-ip6-tables \
-                      kernel-module-ip-tables \
-                      kernel-module-ip6table-filter \
-                      kernel-module-iptable-filter \
-                      kernel-module-ip6table-raw \
-                      kernel-module-iptable-raw \
-                      kernel-module-ip6table-nat \
-                      kernel-module-iptable-nat \
-                      kernel-module-ip6table-mangle \
-                      kernel-module-iptable-magle \
-                      kernel-module-ip6table-security \
-                      kernel-module-iptable-security \
-                      kernel-module-ipt-reject \
-                      kernel-module-iptable-mangle \
-                      kernel-module-xt-checksum \
-                      kernel-module-xt-conntrack \
-                      kernel-module-xt-state \
-                      kernel-module-xt-tcpudp \
-                      "
diff --git a/import-layers/meta-virtualization/recipes-extended/iptables/iptables_1.%.bbappend b/import-layers/meta-virtualization/recipes-extended/iptables/iptables_1.%.bbappend
deleted file mode 100644
index 9a15e60..0000000
--- a/import-layers/meta-virtualization/recipes-extended/iptables/iptables_1.%.bbappend
+++ /dev/null
@@ -1 +0,0 @@
-require ${@bb.utils.contains('DISTRO_FEATURES', 'virtualization', '${BPN}-meta-virtualization.inc', '', d)}
diff --git a/import-layers/meta-virtualization/recipes-extended/ipxe/ipxe_git.bb b/import-layers/meta-virtualization/recipes-extended/ipxe/ipxe_git.bb
deleted file mode 100644
index c0c8a7b..0000000
--- a/import-layers/meta-virtualization/recipes-extended/ipxe/ipxe_git.bb
+++ /dev/null
@@ -1,31 +0,0 @@
-DESCRIPTION = "Open source network boot firmware"
-HOMEPAGE = "http://ipxe.org"
-LICENSE = "GPLv2"
-DEPENDS = "binutils-native perl-native syslinux mtools-native cdrtools-native"
-LIC_FILES_CHKSUM = "file://../COPYING;md5=8ca43cbc842c2336e835926c2166c28b"
-
-SRCREV = "8c43891db4eb131d019360ccfb619f235b17eb58"
-PV = "gitr${SRCPV}"
-PR = "r0"
-
-SRC_URI = "git://git.ipxe.org/ipxe.git;protocol=https"
-
-FILES_${PN} = "/usr/share/firmware/*.rom"
-
-EXTRA_OEMAKE = "NO_WERROR=1"
-#PARALLEL_MAKE=""
-
-S = "${WORKDIR}/git/src"
-
-do_configure() {
-   sed -i s#^ISOLINUX_BIN[\ \\t]*=.*#ISOLINUX_BIN\ =\ ${STAGING_DIR_TARGET}/usr/lib/syslinux/isolinux.bin# arch/i386/Makefile
-}
-
-do_compile() {
-   oe_runmake
-}
-
-do_install() {
-    install -d ${D}/usr/share/firmware
-    install ${S}/bin/*.rom ${D}/usr/share/firmware/
-}
diff --git a/import-layers/meta-virtualization/recipes-extended/irqbalance/irqbalance.inc b/import-layers/meta-virtualization/recipes-extended/irqbalance/irqbalance.inc
deleted file mode 100644
index 53275d1..0000000
--- a/import-layers/meta-virtualization/recipes-extended/irqbalance/irqbalance.inc
+++ /dev/null
@@ -1,47 +0,0 @@
-#
-# Copyright (C) 2013 Wind River Systems, Inc.
-#
-SUMMARY = "IRQ allocation daemon"
-DESCRIPTION = "A daemon to balance interrupts across multiple CPUs, \
-which can lead to better performance and IO balance on SMP systems."
-
-HOMEPAGE = "http://code.google.com/p/irqbalance/"
-BUGTRACKER = "http://code.google.com/p/irqbalance/issues/list"
-
-LICENSE = "GPLv2"
-LIC_FILES_CHKSUM = "file://COPYING;md5=94d55d512a9ba36caa9b7df079bae19f \
-		    file://irqbalance.c;beginline=6;endline=8;md5=b94e153694672307b503b1bc87dc9e24 \
-		   "
-
-DEPENDS = "glib-2.0"
-
-INITSCRIPT_NAME = "irqbalanced"
-INITSCRIPT_PARAMS = "defaults"
-
-inherit autotools update-rc.d pkgconfig systemd
-
-SYSTEMD_PACKAGES = "irqbalance"
-SYSTEMD_SERVICE_irqbalance = "irqbalanced.service"
-
-EXTRA_OECONF = "--program-transform-name= \
-	       "
-
-# let the recipes or appends define options
-#
-PACKAGECONFIG ?= ""
-
-# enable,disable,depends,rdepends
-#
-PACKAGECONFIG[numa] = "--enable-numa,--disable-numa,numactl,"
-PACKAGECONFIG[libcap-ng] = "--with-libcap-ng,--without-libcap-ng,libcap-ng,"
-
-do_install () {
-        oe_runmake 'DESTDIR=${D}' install
-        install -d ${D}${sysconfdir}/init.d
-        cat ${S}/irqbalance.init | sed -e's,/usr/sbin,${sbindir},g' > ${D}${sysconfdir}/init.d/irqbalanced
-        chmod 755 ${D}${sysconfdir}/init.d/irqbalanced
-
-        install -d ${D}${systemd_unitdir}/system
-        install -m 0644 ${WORKDIR}/irqbalanced.service ${D}${systemd_unitdir}/system
-        sed -i -e 's,@SBINDIR@,${sbindir},g' ${D}${systemd_unitdir}/system/irqbalanced.service
-}
diff --git a/import-layers/meta-virtualization/recipes-extended/irqbalance/irqbalance/add-initscript.patch b/import-layers/meta-virtualization/recipes-extended/irqbalance/irqbalance/add-initscript.patch
deleted file mode 100644
index b0e608e..0000000
--- a/import-layers/meta-virtualization/recipes-extended/irqbalance/irqbalance/add-initscript.patch
+++ /dev/null
@@ -1,56 +0,0 @@
-From 80c45eecc193c6c13430ddeb40b9b0fd1841ceee Mon Sep 17 00:00:00 2001
-From: Mark Asselstine <mark.asselstine@windriver.com>
-Date: Thu, 14 Mar 2013 23:31:38 -0700
-Subject: [PATCH] irqbalance: add basic init script
-
-The upstream irqbalance release package does not contain an
-init script so we create a basic one here.
-
-Signed-off-by: Mark Asselstine <mark.asselstine@windriver.com>
-
----
- irqbalance.init | 35 +++++++++++++++++++++++++++++++++++
- 1 file changed, 35 insertions(+)
- create mode 100644 irqbalance.init
-
-diff --git a/irqbalance.init b/irqbalance.init
-new file mode 100644
-index 0000000..d12d62c
---- /dev/null
-+++ b/irqbalance.init
-@@ -0,0 +1,35 @@
-+#!/bin/sh
-+#
-+# Copyright (c) 2012 Wind River Systems, Inc.
-+#
-+### BEGIN INIT INFO
-+# Provides:             irqbalance
-+# Required-Start:
-+# Required-Stop:
-+# Default-Start:        2 3 4 5
-+# Default-Stop:         0 1 6
-+# Short-Description:    IRQ allocation daemon
-+### END INIT INFO
-+
-+case "$1" in
-+  start)
-+	echo -n "Starting irqbalance: "
-+	start-stop-daemon -S -b -n irqbalance -a /usr/sbin/irqbalance
-+	echo "done"
-+	;;
-+  stop)
-+	echo -n "Shutting down irqbalance: "
-+	start-stop-daemon -K -n irqbalance
-+	echo "done"
-+	;;
-+  restart)
-+	$0 stop
-+	$0 start
-+	;;
-+  *)
-+	echo "Usage: $0 {start | stop | restart}" >&2
-+	exit 1
-+	;;
-+esac
-+
-+exit 0
diff --git a/import-layers/meta-virtualization/recipes-extended/irqbalance/irqbalance/fix-configure-libcap-ng.patch b/import-layers/meta-virtualization/recipes-extended/irqbalance/irqbalance/fix-configure-libcap-ng.patch
deleted file mode 100644
index fb22d7a..0000000
--- a/import-layers/meta-virtualization/recipes-extended/irqbalance/irqbalance/fix-configure-libcap-ng.patch
+++ /dev/null
@@ -1,29 +0,0 @@
-From 20a1b2ff2e6d80924824983c363c80f66e05c0d0 Mon Sep 17 00:00:00 2001
-From: Ming Liu <ming.liu@windriver.com>
-Date: Sun, 6 Sep 2015 14:43:24 +0800
-Subject: [PATCH] grasp withval for libcap-ng
-
-Upstream-Status: Pending
-
-Signed-off-by: Ming Liu <ming.liu@windriver.com>
-
----
- configure.ac | 5 ++++-
- 1 file changed, 4 insertions(+), 1 deletion(-)
-
-diff --git a/configure.ac b/configure.ac
-index 38a1bee..95f1488 100644
---- a/configure.ac
-+++ b/configure.ac
-@@ -62,7 +62,10 @@ AS_IF(
- ])
- 
- AC_ARG_WITH([libcap-ng],
--  AS_HELP_STRING([libcap-ng], [Add libcap-ng-support @<:@default=auto@:>@]))
-+  [AS_HELP_STRING([libcap-ng], [Add libcap-ng-support @<:@default=auto@:>@])],
-+  [libcap_ng=$withval],
-+  [libcap_ng=$withval]
-+)
- 
- AS_IF(
-   [test "x$libcap_ng" != "xno"],
diff --git a/import-layers/meta-virtualization/recipes-extended/irqbalance/irqbalance/irqbalance-Add-status-and-reload-commands.patch b/import-layers/meta-virtualization/recipes-extended/irqbalance/irqbalance/irqbalance-Add-status-and-reload-commands.patch
deleted file mode 100644
index ec01448..0000000
--- a/import-layers/meta-virtualization/recipes-extended/irqbalance/irqbalance/irqbalance-Add-status-and-reload-commands.patch
+++ /dev/null
@@ -1,53 +0,0 @@
-From 9a16da2628cc4fddf37fe0368b4f6424270f0b2d Mon Sep 17 00:00:00 2001
-From: Yang Shi <yang.shi@windriver.com>
-Date: Mon, 26 Aug 2013 10:58:02 -0700
-Subject: [PATCH] irqbalance: Add status and reload commands
-
-Add status and reload commands for irqbalanced init script
-
-Signed-off-by: Yang Shi <yang.shi@windriver.com>
-
----
- irqbalance.init | 12 +++++++++---
- 1 file changed, 9 insertions(+), 3 deletions(-)
-
-diff --git a/irqbalance.init b/irqbalance.init
-index d12d62c..f58bf55 100644
---- a/irqbalance.init
-+++ b/irqbalance.init
-@@ -1,6 +1,6 @@
- #!/bin/sh
- #
--# Copyright (c) 2012 Wind River Systems, Inc.
-+# Copyright (c) 2013 Wind River Systems, Inc.
- #
- ### BEGIN INIT INFO
- # Provides:             irqbalance
-@@ -11,6 +11,8 @@
- # Short-Description:    IRQ allocation daemon
- ### END INIT INFO
- 
-+. /etc/init.d/functions
-+
- case "$1" in
-   start)
- 	echo -n "Starting irqbalance: "
-@@ -22,12 +24,16 @@ case "$1" in
- 	start-stop-daemon -K -n irqbalance
- 	echo "done"
- 	;;
--  restart)
-+  restart|reload)
- 	$0 stop
- 	$0 start
- 	;;
-+  status)
-+	status irqbalance
-+	echo "done"
-+	;;
-   *)
--	echo "Usage: $0 {start | stop | restart}" >&2
-+	echo "Usage: $0 {start | stop | restart | reload | status}" >&2
- 	exit 1
- 	;;
- esac
diff --git a/import-layers/meta-virtualization/recipes-extended/irqbalance/irqbalance/irqbalanced.service b/import-layers/meta-virtualization/recipes-extended/irqbalance/irqbalance/irqbalanced.service
deleted file mode 100644
index 5b284fa..0000000
--- a/import-layers/meta-virtualization/recipes-extended/irqbalance/irqbalance/irqbalanced.service
+++ /dev/null
@@ -1,9 +0,0 @@
-[Unit]
-Description=irqbalance daemon
-After=syslog.target
-
-[Service]
-ExecStart=@SBINDIR@/irqbalance --foreground
-
-[Install]
-WantedBy=multi-user.target
diff --git a/import-layers/meta-virtualization/recipes-extended/irqbalance/irqbalance_1.3.0.bb b/import-layers/meta-virtualization/recipes-extended/irqbalance/irqbalance_1.3.0.bb
deleted file mode 100644
index 5581a8b..0000000
--- a/import-layers/meta-virtualization/recipes-extended/irqbalance/irqbalance_1.3.0.bb
+++ /dev/null
@@ -1,15 +0,0 @@
-#
-# Copyright (C) 2015 Wind River Systems, Inc.
-#
-
-require irqbalance.inc
-
-SRC_URI[md5sum] = "53ee393adcfbc8e5ab23cbbd920df687"
-SRC_URI[sha256sum] = "41c2c0842d8fb24240d8069b389cd8d1669625a40009a17ad886967845dc6e43"
-
-SRC_URI = "https://github.com/Irqbalance/irqbalance/archive/v${PV}.tar.gz;downloadfilename=irqbalance-${PV}.tar.gz \
-           file://add-initscript.patch \
-           file://irqbalance-Add-status-and-reload-commands.patch \
-           file://fix-configure-libcap-ng.patch \
-           file://irqbalanced.service \
-          "
diff --git a/import-layers/meta-virtualization/recipes-extended/kvmtool/files/0001-Avoid-pointers-for-address-of-packed-members.patch b/import-layers/meta-virtualization/recipes-extended/kvmtool/files/0001-Avoid-pointers-for-address-of-packed-members.patch
deleted file mode 100644
index 863e86a..0000000
--- a/import-layers/meta-virtualization/recipes-extended/kvmtool/files/0001-Avoid-pointers-for-address-of-packed-members.patch
+++ /dev/null
@@ -1,39 +0,0 @@
-From 2e22df7c24dadf5e16004cd832cabca76a699d4d Mon Sep 17 00:00:00 2001
-From: Khem Raj <raj.khem@gmail.com>
-Date: Tue, 21 Mar 2017 23:32:39 -0700
-Subject: [PATCH] Avoid pointers for address of packed members
-
-Fixes Clang warning due to -Waddress-of-packed-member
-
-virtio/blk.c:161:37: error: taking address of packed member 'geometry' of class or structure 'virtio_blk_config' may result in an unaligned pointer value [-Werror,-Waddress-of-packed-member]
-        struct virtio_blk_geometry *geo = &conf->geometry;
-
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
----
- virtio/blk.c | 3 +--
- 1 file changed, 1 insertion(+), 2 deletions(-)
-
-diff --git a/virtio/blk.c b/virtio/blk.c
-index c485e4f..1f7365d 100644
---- a/virtio/blk.c
-+++ b/virtio/blk.c
-@@ -158,7 +158,6 @@ static void set_guest_features(struct kvm *kvm, void *dev, u32 features)
- {
- 	struct blk_dev *bdev = dev;
- 	struct virtio_blk_config *conf = &bdev->blk_config;
--	struct virtio_blk_geometry *geo = &conf->geometry;
- 
- 	bdev->features = features;
- 
-@@ -167,7 +166,7 @@ static void set_guest_features(struct kvm *kvm, void *dev, u32 features)
- 	conf->seg_max = virtio_host_to_guest_u32(&bdev->vdev, conf->seg_max);
- 
- 	/* Geometry */
--	geo->cylinders = virtio_host_to_guest_u16(&bdev->vdev, geo->cylinders);
-+	conf->geometry.cylinders = virtio_host_to_guest_u16(&bdev->vdev, conf->geometry.cylinders);
- 
- 	conf->blk_size = virtio_host_to_guest_u32(&bdev->vdev, conf->blk_size);
- 	conf->min_io_size = virtio_host_to_guest_u16(&bdev->vdev, conf->min_io_size);
--- 
-2.12.0
-
diff --git a/import-layers/meta-virtualization/recipes-extended/kvmtool/files/0001-kvmtool-9p-fixed-compilation-error.patch b/import-layers/meta-virtualization/recipes-extended/kvmtool/files/0001-kvmtool-9p-fixed-compilation-error.patch
deleted file mode 100644
index 63911fc..0000000
--- a/import-layers/meta-virtualization/recipes-extended/kvmtool/files/0001-kvmtool-9p-fixed-compilation-error.patch
+++ /dev/null
@@ -1,27 +0,0 @@
-From bcd954ffdb9383030e02d356b51e09e4e2a7105a Mon Sep 17 00:00:00 2001
-From: Dariusz Pelowski <dariusz.pelowski@gmail.com>
-Date: Sun, 5 Nov 2017 12:39:52 +0100
-Subject: [PATCH 1/2] kvmtool: 9p: fixed compilation error
-
-makedev is defined in sys/sysmacros.h
-
-Signed-off-by: Dariusz Pelowski <dariusz.pelowski@gmail.com>
----
- virtio/9p.c | 1 +
- 1 file changed, 1 insertion(+)
-
-diff --git a/virtio/9p.c b/virtio/9p.c
-index 6acbfdd..1dee2c2 100644
---- a/virtio/9p.c
-+++ b/virtio/9p.c
-@@ -15,6 +15,7 @@
- #include <string.h>
- #include <errno.h>
- #include <sys/vfs.h>
-+#include <sys/sysmacros.h>
- 
- #include <linux/virtio_ring.h>
- #include <linux/virtio_9p.h>
--- 
-2.15.0
-
diff --git a/import-layers/meta-virtualization/recipes-extended/kvmtool/files/0002-kvmtool-add-EXTRA_CFLAGS-variable.patch b/import-layers/meta-virtualization/recipes-extended/kvmtool/files/0002-kvmtool-add-EXTRA_CFLAGS-variable.patch
deleted file mode 100644
index 262531c..0000000
--- a/import-layers/meta-virtualization/recipes-extended/kvmtool/files/0002-kvmtool-add-EXTRA_CFLAGS-variable.patch
+++ /dev/null
@@ -1,29 +0,0 @@
-From 977a4d41012d1814f5a5330cacc2e4944de387cc Mon Sep 17 00:00:00 2001
-From: Dariusz Pelowski <dariusz.pelowski@gmail.com>
-Date: Sun, 5 Nov 2017 12:39:21 +0100
-Subject: [PATCH 2/2] kvmtool: add EXTRA_CFLAGS variable
-
-to avoid CFLAGS overriding introduce new EXTRA_CFLAGS variable
-for setting via command argument
-
-Signed-off-by: Dariusz Pelowski <dariusz.pelowski@gmail.com>
----
- Makefile | 2 ++
- 1 file changed, 2 insertions(+)
-
-diff --git a/Makefile b/Makefile
-index 64a0a16..bca1b26 100644
---- a/Makefile
-+++ b/Makefile
-@@ -2,6 +2,8 @@
- # Define WERROR=0 to disable -Werror.
- #
- 
-+CFLAGS += $(EXTRA_CFLAGS)
-+
- ifeq ($(strip $(V)),)
- 	E = @echo
- 	Q = @
--- 
-2.15.0
-
diff --git a/import-layers/meta-virtualization/recipes-extended/kvmtool/files/external-crosscompiler.patch b/import-layers/meta-virtualization/recipes-extended/kvmtool/files/external-crosscompiler.patch
deleted file mode 100644
index 75cef3b..0000000
--- a/import-layers/meta-virtualization/recipes-extended/kvmtool/files/external-crosscompiler.patch
+++ /dev/null
@@ -1,31 +0,0 @@
-Upstream-Status: Inappropriate [embedded specific]
-
-This allows OpenEmbedded to pass in cross compiler configuration using
-the default envirnment variables. It is required so that kvmtool can
-be linked against the cross-compiled libfdt library.
-
-diff --git a/Makefile b/Makefile
-index 1f0196f..8bfb068 100644
---- a/Makefile
-+++ b/Makefile
-@@ -14,11 +14,6 @@ export E Q
- include config/utilities.mak
- include config/feature-tests.mak
- 
--CC	:= $(CROSS_COMPILE)gcc
--CFLAGS	:=
--LD	:= $(CROSS_COMPILE)ld
--LDFLAGS	:=
--
- FIND	:= find
- CSCOPE	:= cscope
- TAGS	:= ctags
-@@ -297,7 +292,7 @@ $(warning No static libc found. Skipping guest init)
- endif
- 
- ifeq (y,$(ARCH_WANT_LIBFDT))
--	ifneq ($(call try-build,$(SOURCE_LIBFDT),$(CFLAGS),-lfdt),y)
-+	ifneq ($(call try-build,$(SOURCE_LIBFDT),$(CPPFLAGS) $(CFLAGS),-lfdt),y)
-           $(error No libfdt found. Please install libfdt-dev package)
- 	else
- 		CFLAGS_DYNOPT	+= -DCONFIG_HAS_LIBFDT
diff --git a/import-layers/meta-virtualization/recipes-extended/kvmtool/kvmtool.bb b/import-layers/meta-virtualization/recipes-extended/kvmtool/kvmtool.bb
deleted file mode 100644
index 33fec31..0000000
--- a/import-layers/meta-virtualization/recipes-extended/kvmtool/kvmtool.bb
+++ /dev/null
@@ -1,29 +0,0 @@
-SUMMARY = "Native Linux KVM tool"
-DESCRIPTION = "kvmtool is a lightweight tool for hosting KVM guests."
-
-LICENSE = "GPLv2"
-LIC_FILES_CHKSUM = "file://COPYING;md5=fcb02dc552a041dee27e4b85c7396067"
-
-DEPENDS = "dtc libaio zlib"
-do_configure[depends] += "virtual/kernel:do_shared_workdir"
-
-inherit kernel-arch
-
-SRC_URI = "git://git.kernel.org/pub/scm/linux/kernel/git/will/kvmtool.git \
-           file://external-crosscompiler.patch \
-           file://0001-Avoid-pointers-for-address-of-packed-members.patch \
-           file://0001-kvmtool-9p-fixed-compilation-error.patch \
-           file://0002-kvmtool-add-EXTRA_CFLAGS-variable.patch \
-           "
-
-SRCREV = "3fea89a924511f9f8fe05a892098fad77c1eca0d"
-PV = "3.18.0+git${SRCREV}"
-
-S = "${WORKDIR}/git"
-
-EXTRA_OEMAKE='V=1 EXTRA_CFLAGS="-I${STAGING_KERNEL_DIR}/arch/${ARCH}/include -I${STAGING_KERNEL_BUILDDIR}/arch/${ARCH}/include/generated/"'
-
-do_install() {
-    install -d ${D}${bindir}
-    install -m 0755 ${S}/lkvm ${D}${bindir}/
-}
diff --git a/import-layers/meta-virtualization/recipes-extended/libvirt/libvirt-1.3.5/0001-Added-configure-variable-for-placing-systemd-untis-l.patch b/import-layers/meta-virtualization/recipes-extended/libvirt/libvirt-1.3.5/0001-Added-configure-variable-for-placing-systemd-untis-l.patch
deleted file mode 100644
index a64739c..0000000
--- a/import-layers/meta-virtualization/recipes-extended/libvirt/libvirt-1.3.5/0001-Added-configure-variable-for-placing-systemd-untis-l.patch
+++ /dev/null
@@ -1,55 +0,0 @@
-From 531178d7fbb5d4b3404766cfd0fc999398cccd58 Mon Sep 17 00:00:00 2001
-From: Amarnath Valluri <amarnath.valluri@intel.com>
-Date: Wed, 8 Feb 2017 18:39:48 +0200
-Subject: [PATCH] Added configure variable for placing systemd untis location
-
-Upstream-Status: Pending
-
-Signed-off-by: Amarnath Valluri <amarnath.valluri@intel.com>
----
- configure.ac       | 3 +++
- daemon/Makefile.am | 1 -
- tools/Makefile.am  | 1 -
- 3 files changed, 3 insertions(+), 2 deletions(-)
-
-diff --git a/configure.ac b/configure.ac
-index 0e5b8e3..5a6408c 100644
---- a/configure.ac
-+++ b/configure.ac
-@@ -2687,6 +2687,9 @@ AC_DEFINE_UNQUOTED([isbase64],[libvirt_gl_isbase64],[Hack to avoid symbol clash]
- AC_DEFINE_UNQUOTED([base64_encode],[libvirt_gl_base64_encode],[Hack to avoid symbol clash])
- AC_DEFINE_UNQUOTED([base64_encode_alloc],[libvirt_gl_base64_encode_alloc],[Hack to avoid symbol clash])
- 
-+AC_ARG_VAR(SYSTEMD_UNIT_DIR, 'location for systemd units, defautls to /lib/systemd/system')
-+AS_IF([test "x$SYSTEMD_UNIT_DIR" = "x"], [SYSTEMD_UNIT_DIR="/lib/systemd/system"])
-+
- AC_CONFIG_FILES([run],
-                 [chmod +x,-w run])
- AC_CONFIG_FILES([\
-diff --git a/daemon/Makefile.am b/daemon/Makefile.am
-index edb75e8..2ab42a6 100644
---- a/daemon/Makefile.am
-+++ b/daemon/Makefile.am
-@@ -449,7 +449,6 @@ endif ! LIBVIRT_INIT_SCRIPT_UPSTART
- 
- if LIBVIRT_INIT_SCRIPT_SYSTEMD
- 
--SYSTEMD_UNIT_DIR = /lib/systemd/system
- BUILT_SOURCES += libvirtd.service
- 
- install-init-systemd: install-sysconfig libvirtd.service
-diff --git a/tools/Makefile.am b/tools/Makefile.am
-index 27ecbf1..8cefe1a 100644
---- a/tools/Makefile.am
-+++ b/tools/Makefile.am
-@@ -380,7 +380,6 @@ libvirt-guests.init: libvirt-guests.init.in libvirt-guests.sh
- 
- 
- EXTRA_DIST += libvirt-guests.service.in
--SYSTEMD_UNIT_DIR = /lib/systemd/system
- 
- if LIBVIRT_INIT_SCRIPT_SYSTEMD
- install-systemd: libvirt-guests.service install-sysconfig libvirt-guests.sh
--- 
-2.7.4
-
diff --git a/import-layers/meta-virtualization/recipes-extended/libvirt/libvirt-1.3.5/0001-qemu-Let-empty-default-VNC-password-work-as-document.patch b/import-layers/meta-virtualization/recipes-extended/libvirt/libvirt-1.3.5/0001-qemu-Let-empty-default-VNC-password-work-as-document.patch
deleted file mode 100644
index 1d13dd3..0000000
--- a/import-layers/meta-virtualization/recipes-extended/libvirt/libvirt-1.3.5/0001-qemu-Let-empty-default-VNC-password-work-as-document.patch
+++ /dev/null
@@ -1,81 +0,0 @@
-Upstream-Status: Backport
-
-Backport patch to fix CVE-2016-5008 from:
-
-https://libvirt.org/git/?p=libvirt.git;a=commit;h=f32441c69bf450d6ac593c3acd621c37e120cdaf
-
-Signed-off-by: Kai Kang <kai.kang@windriver.com>
----
-From f32441c69bf450d6ac593c3acd621c37e120cdaf Mon Sep 17 00:00:00 2001
-From: Jiri Denemark <jdenemar@redhat.com>
-Date: Tue, 28 Jun 2016 14:39:58 +0200
-Subject: [PATCH] qemu: Let empty default VNC password work as documented
-
-CVE-2016-5008
-
-Setting an empty graphics password is documented as a way to disable
-VNC/SPICE access, but QEMU does not always behaves like that. VNC would
-happily accept the empty password. Let's enforce the behavior by setting
-password expiration to "now".
-
-https://bugzilla.redhat.com/show_bug.cgi?id=1180092
-
-Signed-off-by: Jiri Denemark <jdenemar@redhat.com>
-(cherry picked from commit bb848feec0f3f10e92dd8e5231ae7aa89b5598f3)
----
- src/qemu/qemu_hotplug.c | 14 +++++++-------
- 1 file changed, 7 insertions(+), 7 deletions(-)
-
-diff --git a/src/qemu/qemu_hotplug.c b/src/qemu/qemu_hotplug.c
-index 5f12d77..fda28b0 100644
---- a/src/qemu/qemu_hotplug.c
-+++ b/src/qemu/qemu_hotplug.c
-@@ -3547,6 +3547,7 @@ qemuDomainChangeGraphicsPasswords(virQEMUDriverPtr driver,
-     time_t now = time(NULL);
-     char expire_time [64];
-     const char *connected = NULL;
-+    const char *password;
-     int ret = -1;
-     virQEMUDriverConfigPtr cfg = virQEMUDriverGetConfig(driver);
- 
-@@ -3554,16 +3555,14 @@ qemuDomainChangeGraphicsPasswords(virQEMUDriverPtr driver,
-         ret = 0;
-         goto cleanup;
-     }
-+    password = auth->passwd ? auth->passwd : defaultPasswd;
- 
-     if (auth->connected)
-         connected = virDomainGraphicsAuthConnectedTypeToString(auth->connected);
- 
-     if (qemuDomainObjEnterMonitorAsync(driver, vm, asyncJob) < 0)
-         goto cleanup;
--    ret = qemuMonitorSetPassword(priv->mon,
--                                 type,
--                                 auth->passwd ? auth->passwd : defaultPasswd,
--                                 connected);
-+    ret = qemuMonitorSetPassword(priv->mon, type, password, connected);
- 
-     if (ret == -2) {
-         if (type != VIR_DOMAIN_GRAPHICS_TYPE_VNC) {
-@@ -3571,14 +3570,15 @@ qemuDomainChangeGraphicsPasswords(virQEMUDriverPtr driver,
-                            _("Graphics password only supported for VNC"));
-             ret = -1;
-         } else {
--            ret = qemuMonitorSetVNCPassword(priv->mon,
--                                            auth->passwd ? auth->passwd : defaultPasswd);
-+            ret = qemuMonitorSetVNCPassword(priv->mon, password);
-         }
-     }
-     if (ret != 0)
-         goto end_job;
- 
--    if (auth->expires) {
-+    if (password[0] == '\0') {
-+        snprintf(expire_time, sizeof(expire_time), "now");
-+    } else if (auth->expires) {
-         time_t lifetime = auth->validTo - now;
-         if (lifetime <= 0)
-             snprintf(expire_time, sizeof(expire_time), "now");
--- 
-2.9.0
-
diff --git a/import-layers/meta-virtualization/recipes-extended/libvirt/libvirt-1.3.5/0001-to-fix-build-error.patch b/import-layers/meta-virtualization/recipes-extended/libvirt/libvirt-1.3.5/0001-to-fix-build-error.patch
deleted file mode 100644
index 089ee33..0000000
--- a/import-layers/meta-virtualization/recipes-extended/libvirt/libvirt-1.3.5/0001-to-fix-build-error.patch
+++ /dev/null
@@ -1,46 +0,0 @@
-From 8353dc1e642011199c3b3ba057d51d8768e4cd54 Mon Sep 17 00:00:00 2001
-From: Lei Maohui <leimaohui@cn.fujitsu.com>
-Date: Fri, 31 Jul 2015 03:17:07 +0900
-Subject: [PATCH] to fix build error
-
-The error likes as following
-
-| Generating internals/command.html.tmp
-| /bin/sh: line 3: internals/command.html.tmp: No such file or directory
-| rm: Generating internals/locking.html.tmp
-| cannot remove `internals/command.html.tmp': No such file or directory
-| make[3]: *** [internals/command.html.tmp] Error 1
-| make[3]: *** Waiting for unfinished jobs....
-
-Signed-off-by: Lei Maohui <leimaohui@cn.fujitsu.com>
-[ywei: rebased to libvirt-1.3.2]
-Signed-off-by: Yunguo Wei <yunguo.wei@windriver.com>
----
- docs/Makefile.am | 4 ++--
- 1 file changed, 2 insertions(+), 2 deletions(-)
-
-diff --git a/docs/Makefile.am b/docs/Makefile.am
-index 1b4353b..c199551 100644
---- a/docs/Makefile.am
-+++ b/docs/Makefile.am
-@@ -164,7 +164,7 @@ EXTRA_DIST=					\
-   todo.pl hvsupport.pl todo.cfg-example \
-   $(schema_DATA)
- 
--acl_generated = aclperms.htmlinc
-+acl.html:: $(srcdir)/aclperms.htmlinc
- 
- $(srcdir)/aclperms.htmlinc: $(top_srcdir)/src/access/viraccessperm.h \
-         $(srcdir)/genaclperms.pl Makefile.am
-@@ -221,7 +221,7 @@ $(srcdir)/hvsupport.html.in: $(srcdir)/hvsupport.pl $(api_DATA) \
- 	convert -rotate 90 $< $@
- 
- %.html.tmp: %.html.in site.xsl subsite.xsl page.xsl \
--		sitemap.html.in $(acl_generated)
-+		sitemap.html.in
- 	@if [ -x $(XSLTPROC) ] ; then \
- 	  echo "Generating $@"; \
- 	  name=`echo $@ | sed -e 's/.tmp//'`; \
--- 
-1.9.1
-
diff --git a/import-layers/meta-virtualization/recipes-extended/libvirt/libvirt-1.3.5/Makefiles-Add-more-XDR_CFLAGS-as-needed.patch b/import-layers/meta-virtualization/recipes-extended/libvirt/libvirt-1.3.5/Makefiles-Add-more-XDR_CFLAGS-as-needed.patch
deleted file mode 100644
index 826cdd0..0000000
--- a/import-layers/meta-virtualization/recipes-extended/libvirt/libvirt-1.3.5/Makefiles-Add-more-XDR_CFLAGS-as-needed.patch
+++ /dev/null
@@ -1,62 +0,0 @@
-From dcfc263db9e69e5381cb511c51836271dec577a3 Mon Sep 17 00:00:00 2001
-From: Mark Asselstine <mark.asselstine@windriver.com>
-Date: Thu, 10 May 2018 13:27:47 -0400
-Subject: [PATCH] Makefiles: Add more $XDR_CFLAGS as needed
-
-When building with libtirpc instead of libc-xdr the include search
-path needs to be used. In several places this was missing and it was
-only looking in /usr/include and failing.
-
-Upstream-Status: Inappropriate [old release]
-
-Signed-off-by: Mark Asselstine <mark.asselstine@windriver.com>
----
- src/Makefile.am   | 5 +++--
- tests/Makefile.am | 1 +
- 2 files changed, 4 insertions(+), 2 deletions(-)
-
-diff --git a/src/Makefile.am b/src/Makefile.am
-index e9ce941..38114b7 100644
---- a/src/Makefile.am
-+++ b/src/Makefile.am
-@@ -1157,7 +1157,7 @@ libvirt_la_BUILT_LIBADD += libvirt_driver.la
- libvirt_driver_la_SOURCES = $(DRIVER_SOURCES)
- 
- libvirt_driver_la_CFLAGS = \
--		$(GNUTLS_CFLAGS) $(CURL_CFLAGS) \
-+		$(GNUTLS_CFLAGS) $(CURL_CFLAGS) $(XDR_CFLAGS) \
- 		-I$(srcdir)/conf $(AM_CFLAGS)
- libvirt_driver_la_LIBADD = \
- 		$(GNUTLS_LIBS) $(CURL_LIBS) $(DLOPEN_LIBS)
-@@ -1348,6 +1348,7 @@ endif ! WITH_DRIVER_MODULES
- 
- libvirt_driver_qemu_impl_la_CFLAGS = \
- 		$(GNUTLS_CFLAGS) \
-+		$(XDR_CFLAGS) \
- 		$(LIBNL_CFLAGS) \
- 		-I$(srcdir)/access \
- 		-I$(srcdir)/conf \
-@@ -2306,7 +2307,7 @@ libvirt_lxc_la_LDFLAGS = \
- 		$(CYGWIN_EXTRA_LDFLAGS) \
- 		$(MINGW_EXTRA_LDFLAGS) \
- 		$(NULL)
--libvirt_lxc_la_CFLAGS = $(AM_CFLAGS)
-+libvirt_lxc_la_CFLAGS = $(AM_CFLAGS) $(XDR_CFLAGS)
- libvirt_lxc_la_LIBADD = libvirt.la $(CYGWIN_EXTRA_LIBADD)
- 
- # Since virt-login-shell will be setuid, we must do everything
-diff --git a/tests/Makefile.am b/tests/Makefile.am
-index 2f8b9eb..aec9a3e 100644
---- a/tests/Makefile.am
-+++ b/tests/Makefile.am
-@@ -48,6 +48,7 @@ AM_CFLAGS = \
- 	$(APPARMOR_CFLAGS) \
- 	$(YAJL_CFLAGS) \
- 	$(COVERAGE_CFLAGS) \
-+	$(XDR_CFLAGS) \
- 	$(WARN_CFLAGS)
- 
- AM_LDFLAGS = \
--- 
-2.7.4
-
diff --git a/import-layers/meta-virtualization/recipes-extended/libvirt/libvirt-1.3.5/configure.ac-search-for-rpc-rpc.h-in-the-sysroot.patch b/import-layers/meta-virtualization/recipes-extended/libvirt/libvirt-1.3.5/configure.ac-search-for-rpc-rpc.h-in-the-sysroot.patch
deleted file mode 100644
index edbadb6..0000000
--- a/import-layers/meta-virtualization/recipes-extended/libvirt/libvirt-1.3.5/configure.ac-search-for-rpc-rpc.h-in-the-sysroot.patch
+++ /dev/null
@@ -1,36 +0,0 @@
-From f10477f0fe5e4b7487a4a41faa216d10cd2bc7c3 Mon Sep 17 00:00:00 2001
-From: Mark Asselstine <mark.asselstine@windriver.com>
-Date: Thu, 10 May 2018 12:05:04 -0400
-Subject: [PATCH] configure.ac: search for rpc/rpc.h in the sysroot
-
-We want to avoid host contamination and use the sysroot as the base
-directory for our search so add the '=' the the '-I' when searching
-for libtirpc's rpc.h header.
-
-Upstream-Status: Inappropriate [old release]
-
-Signed-off-by: Mark Asselstine <mark.asselstine@windriver.com>
----
- configure.ac | 4 ++--
- 1 file changed, 2 insertions(+), 2 deletions(-)
-
-diff --git a/configure.ac b/configure.ac
-index 5a6408c..6c19f6d 100644
---- a/configure.ac
-+++ b/configure.ac
-@@ -705,10 +705,10 @@ if test x"$with_remote" = x"yes" || test x"$with_libvirtd" = x"yes"; then
-     dnl check for cygwin's variation in xdr function names
-     AC_CHECK_FUNCS([xdr_u_int64_t],[],[],[#include <rpc/xdr.h>])
- 
--    dnl Cygwin/recent glibc requires -I/usr/include/tirpc for <rpc/rpc.h>
-+    dnl Cygwin/recent glibc requires -I=/usr/include/tirpc for <rpc/rpc.h>
-     old_CFLAGS=$CFLAGS
-     AC_CACHE_CHECK([where to find <rpc/rpc.h>], [lv_cv_xdr_cflags], [
--      for add_CFLAGS in '' '-I/usr/include/tirpc' 'missing'; do
-+      for add_CFLAGS in '' '-I=/usr/include/tirpc' 'missing'; do
-         if test x"$add_CFLAGS" = xmissing; then
-           lv_cv_xdr_cflags=missing; break
-         fi
--- 
-2.7.4
-
diff --git a/import-layers/meta-virtualization/recipes-extended/libvirt/libvirt-python.inc b/import-layers/meta-virtualization/recipes-extended/libvirt/libvirt-python.inc
deleted file mode 100644
index 15aa804..0000000
--- a/import-layers/meta-virtualization/recipes-extended/libvirt/libvirt-python.inc
+++ /dev/null
@@ -1,55 +0,0 @@
-inherit pythonnative python-dir
-
-export STAGING_INCDIR
-export STAGING_LIBDIR
-export BUILD_SYS 
-export HOST_SYS
-
-RDEPENDS_${PN}-python += "python"
-PACKAGECONFIG_${PN}-python[xen] = ",,,xen-python"
-
-PACKAGES += "${PN}-python-staticdev ${PN}-python-dev ${PN}-python-dbg ${PN}-python"
-
-FILES_${PN}-python-staticdev += "${PYTHON_SITEPACKAGES_DIR}/*.a"
-FILES_${PN}-python-dev += "${PYTHON_SITEPACKAGES_DIR}/*.la"
-FILES_${PN}-python-dbg += "${PYTHON_SITEPACKAGES_DIR}/.debug/"
-FILES_${PN}-python = "${bindir}/* ${libdir}/* ${libdir}/${PYTHON_DIR}/*"
-
-SRC_URI += "http://libvirt.org/sources/python/libvirt-python-${PV}.tar.gz;name=libvirt_python"
-SRC_URI += "file://libvirt_api_xml_path.patch;patchdir=../libvirt-python-${PV}"
-
-SRC_URI[libvirt_python.md5sum] = "4dbd7ef9ee9c4dea5887b5b31eb04529"
-SRC_URI[libvirt_python.sha256sum] = "a0508a57637fd18a3584fb9d2322fb172f65708c9db16e0438a70eb0f36fa5c2"
-
-export LIBVIRT_API_PATH = "${S}/docs/libvirt-api.xml"
-export LIBVIRT_CFLAGS = "-I${S}/include"
-export LIBVIRT_LIBS = "-L${B}/src/.libs -lvirt -ldl"
-export LDFLAGS="-L${B}/src/.libs"
-
-LIBVIRT_INSTALL_ARGS = "--root=${D} \
-    --prefix=${prefix} \
-    --install-lib=${PYTHON_SITEPACKAGES_DIR} \
-    --install-data=${datadir}"
-
-python __anonymous () {
-    pkgconfig = d.getVar('PACKAGECONFIG')
-    if ('python') in pkgconfig.split():
-        d.setVar('LIBVIRT_PYTHON_ENABLE', '1')
-    else:
-        d.setVar('LIBVIRT_PYTHON_ENABLE', '0')
-}
-
-do_compile_append() {
-	if [ "${LIBVIRT_PYTHON_ENABLE}" = "1" ]; then
-		cd ${WORKDIR}/${BPN}-python-${PV} && \
-		  ${STAGING_BINDIR_NATIVE}/python-native/python setup.py build
-	fi
-}
-
-do_install_append() {
-	if [ "${LIBVIRT_PYTHON_ENABLE}" = "1" ]; then
-		cd ${WORKDIR}/${BPN}-python-${PV} && \
-		  ${STAGING_BINDIR_NATIVE}/python-native/python setup.py install \
-                       --install-lib=${D}/${PYTHON_SITEPACKAGES_DIR} ${LIBVIRT_INSTALL_ARGS}
-	fi
-}
diff --git a/import-layers/meta-virtualization/recipes-extended/libvirt/libvirt/0001-nsslinktest-also-build-virAtomic.h.patch b/import-layers/meta-virtualization/recipes-extended/libvirt/libvirt/0001-nsslinktest-also-build-virAtomic.h.patch
deleted file mode 100644
index 6ab1c4e..0000000
--- a/import-layers/meta-virtualization/recipes-extended/libvirt/libvirt/0001-nsslinktest-also-build-virAtomic.h.patch
+++ /dev/null
@@ -1,40 +0,0 @@
-Upstream-Status: Submitted [http://www.redhat.com/archives/libvir-list/2016-August/msg00389.html]
-
-When build for architecture that don't use gcc atomic ops but pthread,
-it fails to build for arm:
-
-| ../tools/nss/.libs/libnss_libvirt_impl.a(libvirt_nss_la-virobject.o): In function `virClassNew':
-| /buildarea2/kkang/builds/qemuarm-Aug03/bitbake_build/tmp/work/armv5e-wrs-linux-gnueabi/libvirt/1.3.5-r0/build/src/../../libvirt-1.3.5/src/util/virobject.c:153: undefined reference to `virAtomicLock'
-| ../tools/nss/.libs/libnss_libvirt_impl.a(libvirt_nss_la-virobject.o): In function `virObjectNew':
-| /buildarea2/kkang/builds/qemuarm-Aug03/bitbake_build/tmp/work/armv5e-wrs-linux-gnueabi/libvirt/1.3.5-r0/build/src/../../libvirt-1.3.5/src/util/virobject.c:205: undefined reference to `virAtomicLock'
-| ../tools/nss/.libs/libnss_libvirt_impl.a(libvirt_nss_la-virobject.o): In function `virObjectUnref':
-| /buildarea2/kkang/builds/qemuarm-Aug03/bitbake_build/tmp/work/armv5e-wrs-linux-gnueabi/libvirt/1.3.5-r0/build/src/../../libvirt-1.3.5/src/util/virobject.c:277: undefined reference to `virAtomicLock'
-| ../tools/nss/.libs/libnss_libvirt_impl.a(libvirt_nss_la-virobject.o): In function `virObjectRef':
-| /buildarea2/kkang/builds/qemuarm-Aug03/bitbake_build/tmp/work/armv5e-wrs-linux-gnueabi/libvirt/1.3.5-r0/build/src/../../libvirt-1.3.5/src/util/virobject.c:298: undefined reference to `virAtomicLock'
-| collect2: error: ld returned 1 exit status
-
-It is similar with:
-
-http://libvirt.org/git/?p=libvirt.git;a=commit;h=12dc729
-
-Signed-off-by: Kai Kang <kai.kang@windriver.com>
----
- src/Makefile.am | 2 ++
- 1 file changed, 2 insertions(+)
-
-diff --git a/src/Makefile.am b/src/Makefile.am
-index 12b66c2..6e55972 100644
---- a/src/Makefile.am
-+++ b/src/Makefile.am
-@@ -2989,6 +2989,8 @@ noinst_LTLIBRARIES += libvirt-nss.la
- libvirt_nss_la_SOURCES =		\
- 		util/viralloc.c			\
- 		util/viralloc.h			\
-+		util/viratomic.c		\
-+		util/viratomic.h		\
- 		util/virbitmap.c		\
- 		util/virbitmap.h		\
- 		util/virbuffer.c		\
--- 
-2.9.0
-
diff --git a/import-layers/meta-virtualization/recipes-extended/libvirt/libvirt/0001-ptest-Remove-Windows-1252-check-from-esxutilstest.patch b/import-layers/meta-virtualization/recipes-extended/libvirt/libvirt/0001-ptest-Remove-Windows-1252-check-from-esxutilstest.patch
deleted file mode 100644
index 217bdbc..0000000
--- a/import-layers/meta-virtualization/recipes-extended/libvirt/libvirt/0001-ptest-Remove-Windows-1252-check-from-esxutilstest.patch
+++ /dev/null
@@ -1,28 +0,0 @@
-From ffc71da15c3da068f85d16617b6e0c0175fc0110 Mon Sep 17 00:00:00 2001
-From: He Zhe <zhe.he@windriver.com>
-Date: Tue, 23 Aug 2016 02:28:47 -0400
-Subject: [PATCH] ptest: Remove Windows-1252 check from esxutilstest
-
-Currently we use iconv from glibc-locale and it does not support
-Windows-1252 and we don't need support windows character encoding.
-
-Signed-off-by: He Zhe <zhe.he@windriver.com>
----
- tests/esxutilstest.c | 1 -
- 1 file changed, 1 deletion(-)
-
-diff --git a/tests/esxutilstest.c b/tests/esxutilstest.c
-index 44bdc84..3223de3 100644
---- a/tests/esxutilstest.c
-+++ b/tests/esxutilstest.c
-@@ -258,7 +258,6 @@ mymain(void)
-     DO_TEST(ParseDatastorePath);
-     DO_TEST(ConvertDateTimeToCalendarTime);
-     DO_TEST(EscapeDatastoreItem);
--    DO_TEST(ConvertWindows1252ToUTF8);
- 
-     return result == 0 ? EXIT_SUCCESS : EXIT_FAILURE;
- }
--- 
-2.8.1
-
diff --git a/import-layers/meta-virtualization/recipes-extended/libvirt/libvirt/0001-ptest-add-missing-test_helper-files.patch b/import-layers/meta-virtualization/recipes-extended/libvirt/libvirt/0001-ptest-add-missing-test_helper-files.patch
deleted file mode 100644
index b4f1e27..0000000
--- a/import-layers/meta-virtualization/recipes-extended/libvirt/libvirt/0001-ptest-add-missing-test_helper-files.patch
+++ /dev/null
@@ -1,29 +0,0 @@
-From e625a42caca492fe7d52b70bbbf83ae4d99cb15e Mon Sep 17 00:00:00 2001
-From: He Zhe <zhe.he@windriver.com>
-Date: Tue, 23 Aug 2016 02:16:20 -0400
-Subject: [PATCH] ptest: add missing test_helper files
-
-Signed-off-by: He Zhe <zhe.he@windriver.com>
----
- tests/Makefile.am | 4 +++-
- 1 file changed, 3 insertions(+), 1 deletion(-)
-
-diff --git a/tests/Makefile.am b/tests/Makefile.am
-index 1c85656..2f8b9eb 100644
---- a/tests/Makefile.am
-+++ b/tests/Makefile.am
-@@ -1422,8 +1422,10 @@ install-ptest:
- 	@(for file in $(PTESTS); do \
- 		if [ -f .libs/$$file ]; then \
- 			install .libs/$$file $(DEST_DIR)/tests; \
--		else \
-+		elif [ -f $(srcdir)/$$file ]; then \
- 			install $(srcdir)/$$file $(DEST_DIR)/tests; \
-+		else \
-+			install $(builddir)/$$file $(DEST_DIR)/tests; \
- 		fi; \
- 	done;)
- 	@(if [ -d .libs ]; then install .libs/*.so $(DEST_DIR)/tests/.libs; fi;)
--- 
-2.8.1
-
diff --git a/import-layers/meta-virtualization/recipes-extended/libvirt/libvirt/Revert-build-add-prefix-to-SYSTEMD_UNIT_DIR.patch b/import-layers/meta-virtualization/recipes-extended/libvirt/libvirt/Revert-build-add-prefix-to-SYSTEMD_UNIT_DIR.patch
deleted file mode 100644
index 02ddf68..0000000
--- a/import-layers/meta-virtualization/recipes-extended/libvirt/libvirt/Revert-build-add-prefix-to-SYSTEMD_UNIT_DIR.patch
+++ /dev/null
@@ -1,70 +0,0 @@
-Upstream-Status: Inappropriate [configuration]
-
-Update context for version 1.3.5.
-
-Signed-off-by: Kai Kang <kai.kang@windriver.com>
----
-From dd915e7f70e676aea93f750c75d16ce646e71e4b Mon Sep 17 00:00:00 2001
-From: Mark Asselstine <mark.asselstine@windriver.com>
-Date: Wed, 9 Sep 2015 11:52:44 -0400
-Subject: [PATCH] Revert "build: add $(prefix) to SYSTEMD_UNIT_DIR"
-
-This reverts upstream commit 00e9d6071b2450659ce01bc984f64ecb5d7ba62d
-with minor context changes to allow it to apply.
-
-Yocto based builds use /lib/systemd/system for systemd unit files and
-since upstream has chosen to use a mechanism for setting
-SYSTEMD_UNIT_DIR which is not flexible we have to resort to reverting
-this upstream commit to avoid having ${prefix} added to the path.
-
-Signed-off-by: Mark Asselstine <mark.asselstine@windriver.com>
-[ywei: rebased to libvirt-1.3.2]
-Signed-off-by: Yunguo Wei <yunguo.wei@windriver.com>
----
- daemon/Makefile.am | 2 +-
- src/Makefile.am    | 2 +-
- tools/Makefile.am  | 2 +-
- 3 files changed, 3 insertions(+), 3 deletions(-)
-
-diff --git a/daemon/Makefile.am b/daemon/Makefile.am
-index 2dbe81b..41ea2db 100644
---- a/daemon/Makefile.am
-+++ b/daemon/Makefile.am
-@@ -449,7 +449,7 @@ endif ! LIBVIRT_INIT_SCRIPT_UPSTART
- 
- if LIBVIRT_INIT_SCRIPT_SYSTEMD
- 
--SYSTEMD_UNIT_DIR = $(prefix)/lib/systemd/system
-+SYSTEMD_UNIT_DIR = /lib/systemd/system
- BUILT_SOURCES += libvirtd.service
- 
- install-init-systemd: install-sysconfig libvirtd.service
-diff --git a/src/Makefile.am b/src/Makefile.am
-index a316b4d..d271291 100644
---- a/src/Makefile.am
-+++ b/src/Makefile.am
-@@ -2633,7 +2633,7 @@ EXTRA_DIST += \
- if WITH_LIBVIRTD
- if LIBVIRT_INIT_SCRIPT_SYSTEMD
- 
--SYSTEMD_UNIT_DIR = $(prefix)/lib/systemd/system
-+SYSTEMD_UNIT_DIR = /lib/systemd/system
- 
- BUILT_SOURCES += virtlockd.service virtlockd.socket \
- 		 virtlogd.service virtlogd.socket
-diff --git a/tools/Makefile.am b/tools/Makefile.am
-index b3227a7..0e58f73 100644
---- a/tools/Makefile.am
-+++ b/tools/Makefile.am
-@@ -380,7 +380,7 @@ libvirt-guests.init: libvirt-guests.init.in libvirt-guests.sh
- 
- 
- EXTRA_DIST += libvirt-guests.service.in
--SYSTEMD_UNIT_DIR = $(prefix)/lib/systemd/system
-+SYSTEMD_UNIT_DIR = /lib/systemd/system
- 
- if LIBVIRT_INIT_SCRIPT_SYSTEMD
- install-systemd: libvirt-guests.service install-sysconfig libvirt-guests.sh
--- 
-1.9.1
-
diff --git a/import-layers/meta-virtualization/recipes-extended/libvirt/libvirt/dnsmasq.conf b/import-layers/meta-virtualization/recipes-extended/libvirt/libvirt/dnsmasq.conf
deleted file mode 100644
index a7c3059..0000000
--- a/import-layers/meta-virtualization/recipes-extended/libvirt/libvirt/dnsmasq.conf
+++ /dev/null
@@ -1,2 +0,0 @@
-bind-interfaces
-except-interface=virbr0
diff --git a/import-layers/meta-virtualization/recipes-extended/libvirt/libvirt/install-missing-file.patch b/import-layers/meta-virtualization/recipes-extended/libvirt/libvirt/install-missing-file.patch
deleted file mode 100644
index ecd4a87..0000000
--- a/import-layers/meta-virtualization/recipes-extended/libvirt/libvirt/install-missing-file.patch
+++ /dev/null
@@ -1,52 +0,0 @@
-Upstream-Status: Inapproriate
-
-This patch is for ptest, so it is inapproriate to send to upstream.
-
-Update context for 1.3.5.
-
-Signed-off-by: Kai Kang <kai.kang@windriver.com>
----
-From 0780181a3285511f166487a54ebc231fc657edfe Mon Sep 17 00:00:00 2001
-From: Catalin Enache <catalin.enache@windriver.com>
-Date: Mon, 25 Jul 2016 16:38:51 +0300
-Subject: [PATCH] Install missing conf file
-
-openvzutilstest.conf file is needed by openvzutilstest test.
-
-Signed-off-by: Catalin Enache <catalin.enache@windriver.com>
----
- tests/Makefile.am | 4 +++-
- 1 file changed, 3 insertions(+), 1 deletion(-)
-
-diff --git a/tests/Makefile.am b/tests/Makefile.am
-index 02e0dd8..187fbca 100644
---- a/tests/Makefile.am
-+++ b/tests/Makefile.am
-@@ -170,6 +170,7 @@ EXTRA_DIST =		\
- 	xml2vmxdata
- 
- test_helpers = commandhelper ssh virconftest
-+test_misc =
- test_programs = virshtest sockettest \
- 	nodeinfotest virbuftest \
- 	commandtest seclabeltest \
-@@ -259,6 +260,7 @@ endif WITH_LXC
- 
- if WITH_OPENVZ
- test_programs += openvzutilstest
-+test_misc += openvzutilstest.conf
- endif WITH_OPENVZ
- 
- if WITH_ESX
-@@ -1293,7 +1295,7 @@ endif ! WITH_CIL
- 
- buildtest-TESTS: $(TESTS) $(test_libraries) $(test_helpers)
- 
--PTESTS = $(TESTS) $(test_helpers) test-lib.sh schematestutils.sh
-+PTESTS = $(TESTS) $(test_helpers) $(test_misc) test-lib.sh schematestutils.sh
- 
- install-ptest:
- 	list='$(TESTS) $(test_helpers) test-lib.sh schematestutils.sh'
--- 
-2.7.4
-
diff --git a/import-layers/meta-virtualization/recipes-extended/libvirt/libvirt/libvirt-1.0.3-fix-thread-safety-in-lxc-callback-handling.patch b/import-layers/meta-virtualization/recipes-extended/libvirt/libvirt/libvirt-1.0.3-fix-thread-safety-in-lxc-callback-handling.patch
deleted file mode 100644
index 558d5ef..0000000
--- a/import-layers/meta-virtualization/recipes-extended/libvirt/libvirt/libvirt-1.0.3-fix-thread-safety-in-lxc-callback-handling.patch
+++ /dev/null
@@ -1,63 +0,0 @@
-From ad5d9cee87357f9f38f62583119606ef95ba10df Mon Sep 17 00:00:00 2001
-From: Bogdan Purcareata <bogdan.purcareata@freescale.com>
-Date: Fri, 24 May 2013 16:46:00 +0300
-Subject: [PATCH] Fix thread safety in LXC callback handling
-
-Signed-off-by: Bogdan Purcareata <bogdan.purcareata@freescale.com>
----
- src/lxc/lxc_process.c | 18 +++++++++++++++++-
- 1 file changed, 17 insertions(+), 1 deletion(-)
-
-diff --git a/src/lxc/lxc_process.c b/src/lxc/lxc_process.c
-index aaa81a7..0eadc67 100644
---- a/src/lxc/lxc_process.c
-+++ b/src/lxc/lxc_process.c
-@@ -609,8 +609,13 @@ static void virLXCProcessMonitorExitNotify(virLXCMonitorPtr mon ATTRIBUTE_UNUSED
-                                            virLXCProtocolExitStatus status,
-                                            virDomainObjPtr vm)
- {
-+    virLXCDriverPtr driver = lxc_driver;
-     virLXCDomainObjPrivatePtr priv = vm->privateData;
- 
-+    lxcDriverLock(driver);
-+    virObjectLock(vm);
-+    lxcDriverUnlock(driver);
-+
-     switch (status) {
-     case VIR_LXC_PROTOCOL_EXIT_STATUS_SHUTDOWN:
-         priv->stopReason = VIR_DOMAIN_EVENT_STOPPED_SHUTDOWN;
-@@ -628,6 +633,8 @@ static void virLXCProcessMonitorExitNotify(virLXCMonitorPtr mon ATTRIBUTE_UNUSED
-     }
-     VIR_DEBUG("Domain shutoff reason %d (from status %d)",
-               priv->stopReason, status);
-+
-+    virObjectUnlock(vm);
- }
- 
- /* XXX a little evil */
-@@ -636,12 +643,21 @@ static void virLXCProcessMonitorInitNotify(virLXCMonitorPtr mon ATTRIBUTE_UNUSED
-                                            pid_t initpid,
-                                            virDomainObjPtr vm)
- {
--    virLXCDomainObjPrivatePtr priv = vm->privateData;
-+    virLXCDriverPtr driver = lxc_driver;
-+    virLXCDomainObjPrivatePtr priv;
-+
-+    lxcDriverLock(driver);
-+    virObjectLock(vm);
-+    lxcDriverUnlock(driver);
-+
-+    priv = vm->privateData;
-     priv->initpid = initpid;
-     virDomainAuditInit(vm, initpid);
- 
-     if (virDomainSaveStatus(lxc_driver->caps, lxc_driver->stateDir, vm) < 0)
-         VIR_WARN("Cannot update XML with PID for LXC %s", vm->def->name);
-+
-+    virObjectUnlock(vm);
- }
- 
- static virLXCMonitorCallbacks monitorCallbacks = {
--- 
-1.7.11.7
-
diff --git a/import-layers/meta-virtualization/recipes-extended/libvirt/libvirt/libvirt-use-pkg-config-to-locate-libcap.patch b/import-layers/meta-virtualization/recipes-extended/libvirt/libvirt/libvirt-use-pkg-config-to-locate-libcap.patch
deleted file mode 100644
index 65b046e..0000000
--- a/import-layers/meta-virtualization/recipes-extended/libvirt/libvirt/libvirt-use-pkg-config-to-locate-libcap.patch
+++ /dev/null
@@ -1,45 +0,0 @@
-From 3e271f6db12ffe34843428ec2f0bca7a8fe3aa65 Mon Sep 17 00:00:00 2001
-From: Bruce Ashfield <bruce.ashfield@windriver.com>
-Date: Wed, 8 Apr 2015 13:03:03 -0400
-Subject: [PATCH] libvirt: use pkg-config to locate libcap
-
-libvirt wants to use pcap-config to locate the exisence and location
-of libpcap. oe-core stubs this script and replaces it with pkg-config,
-which can lead to the host pcap-config triggering and either breaking
-the build or introducing host contamination.
-
-To fix this issue, we patch configure to use 'pkg-config libcap' to
-locate the correct libraries.
-
-Signed-off-by: Bruce Ashfield <bruce.ashfield@windriver.com>
----
- configure.ac | 6 +++---
- 1 file changed, 3 insertions(+), 3 deletions(-)
-
-diff --git a/configure.ac b/configure.ac
-index f37047599b76..5f9b84363b96 100644
---- a/configure.ac
-+++ b/configure.ac
-@@ -1553,7 +1553,7 @@ fi
- AM_CONDITIONAL([HAVE_NUMAD], [test "$with_numad" != "no"])
- 
- dnl pcap lib
--LIBPCAP_CONFIG="pcap-config"
-+LIBPCAP_CONFIG="pkg-config libpcap"
- LIBPCAP_CFLAGS=""
- LIBPCAP_LIBS=""
- LIBPCAP_FOUND="no"
-@@ -1563,8 +1563,8 @@ AC_ARG_WITH([libpcap], [AS_HELP_STRING([--with-libpcap=@<:@PFX@:>@],
- if test "$with_qemu" = "yes"; then
-   case $with_libpcap in
-     no)     LIBPCAP_CONFIG= ;;
--    ''|yes) LIBPCAP_CONFIG="pcap-config" ;;
--    *)      LIBPCAP_CONFIG="$with_libpcap/bin/pcap-config" ;;
-+    ''|yes) LIBPCAP_CONFIG="pkg-config libpcap" ;;
-+    *)      LIBPCAP_CONFIG="$with_libpcap/bin/pkg-config libpcap" ;;
-   esac
-   AS_IF([test "x$LIBPCAP_CONFIG" != "x"], [
-     AC_MSG_CHECKING(libpcap $LIBPCAP_CONFIG >= $LIBPCAP_REQUIRED )
--- 
-2.1.0
-
diff --git a/import-layers/meta-virtualization/recipes-extended/libvirt/libvirt/libvirt_api_xml_path.patch b/import-layers/meta-virtualization/recipes-extended/libvirt/libvirt/libvirt_api_xml_path.patch
deleted file mode 100644
index 3c2622c..0000000
--- a/import-layers/meta-virtualization/recipes-extended/libvirt/libvirt/libvirt_api_xml_path.patch
+++ /dev/null
@@ -1,85 +0,0 @@
-Adding support for LIBVIRT_CFLAGS and LIBVIRT_LIBS
-
-Signed-off-by: Amy Fong <amy.fong@windriver.com>
-
-
-Adding a support for LIBVIRT_API_PATH evironment variable, which can
-control where the script should look for the 'libvirt-api.xml' file.
-This allows building libvirt-python against different libvirt than the
-one installed in the system.  This may be used for example in autotest
-or by packagers without the need to install libvirt into the system.
-
-Signed-off-by: Martin Kletzander <mkletzan redhat com>
-[ywei: rebased to 1.3.2]
-Signed-off-by: Yunguo Wei <yunguo.wei@windriver.com>
----
- setup.py |   25 ++++++++++++++++++++++---
- 1 file changed, 22 insertions(+), 3 deletions(-)
-
-Index: libvirt-python-1.2.4/setup.py
-===================================================================
---- libvirt-python-1.2.4.orig/setup.py
-+++ libvirt-python-1.2.4/setup.py
-@@ -40,13 +40,7 @@
-            "libvirt"])
- 
- def have_libvirt_lxc():
--    try:
--        spawn([get_pkgcfg(),
--               "--atleast-version=%s" % MIN_LIBVIRT_LXC,
--             "libvirt"])
--        return True
--    except DistutilsExecError:
--        return False
-+    return True
- 
- def get_pkgconfig_data(args, mod, required=True):
-     """Run pkg-config to and return content associated with it"""
-@@ -68,7 +62,17 @@
-     """Check with pkg-config that libvirt is present and extract
-     the API XML file paths we need from it"""
- 
--    libvirt_api = get_pkgconfig_data(["--variable", "libvirt_api"], "libvirt")
-+    libvirt_api = os.getenv("LIBVIRT_API_PATH")
-+
-+    if libvirt_api:
-+        if not libvirt_api.endswith("-api.xml"):
-+            raise ValueError("Invalid path '%s' for API XML" % libvirt_api)
-+        if not os.path.exists(libvirt_api):
-+            raise ValueError("API XML '%s' does not exist, "
-+                             "have you built libvirt?" % libvirt_api)
-+    else:
-+        libvirt_api = get_pkgconfig_data(["--variable", "libvirt_api"],
-+                                         "libvirt")
- 
-     offset = libvirt_api.index("-api.xml")
-     libvirt_qemu_api = libvirt_api[0:offset] + "-qemu-api.xml"
-@@ -88,8 +92,17 @@
- 
-     c_modules = []
-     py_modules = []
--    ldflags = get_pkgconfig_data(["--libs-only-L"], "libvirt", False).split()
--    cflags = get_pkgconfig_data(["--cflags"], "libvirt", False).split()
-+    libvirt_cflags = os.getenv("LIBVIRT_CFLAGS")
-+    if libvirt_cflags:
-+        cflags = libvirt_cflags.split()
-+    else:
-+        cflags = get_pkgconfig_data(["--cflags"], "libvirt", False).split()
-+
-+    libvirt_libs = os.getenv("LIBVIRT_LIBS")
-+    if libvirt_libs:
-+        ldflags = libvirt_libs.split()
-+    else:
-+        ldflags = get_pkgconfig_data(["--libs-only-L"], "libvirt", False).split()
- 
-     module = Extension('libvirtmod',
-                        sources = ['libvirt-override.c', 'build/libvirt.c', 'typewrappers.c', 'libvirt-utils.c'],
-@@ -138,7 +151,7 @@
- class my_build(build):
- 
-     def run(self):
--        check_minimum_libvirt_version()
-+#       check_minimum_libvirt_version()
-         apis = get_api_xml_files()
- 
-         self.spawn([sys.executable, "generator.py", "libvirt", apis[0]])
diff --git a/import-layers/meta-virtualization/recipes-extended/libvirt/libvirt/libvirtd.conf b/import-layers/meta-virtualization/recipes-extended/libvirt/libvirt/libvirtd.conf
deleted file mode 100644
index c0462b4..0000000
--- a/import-layers/meta-virtualization/recipes-extended/libvirt/libvirt/libvirtd.conf
+++ /dev/null
@@ -1,393 +0,0 @@
-# Master libvirt daemon configuration file
-#
-# For further information consult http://libvirt.org/format.html
-#
-# NOTE: the tests/daemon-conf regression test script requires
-# that each "PARAMETER = VALUE" line in this file have the parameter
-# name just after a leading "#".
-
-#################################################################
-#
-# Network connectivity controls
-#
-
-# Flag listening for secure TLS connections on the public TCP/IP port.
-# NB, must pass the --listen flag to the libvirtd process for this to
-# have any effect.
-#
-# It is necessary to setup a CA and issue server certificates before
-# using this capability.
-#
-# This is enabled by default, uncomment this to disable it
-listen_tls = 0
-
-# Listen for unencrypted TCP connections on the public TCP/IP port.
-# NB, must pass the --listen flag to the libvirtd process for this to
-# have any effect.
-#
-# Using the TCP socket requires SASL authentication by default. Only
-# SASL mechanisms which support data encryption are allowed. This is
-# DIGEST_MD5 and GSSAPI (Kerberos5)
-#
-# This is disabled by default, uncomment this to enable it.
-listen_tcp = 1
-
-
-
-# Override the port for accepting secure TLS connections
-# This can be a port number, or service name
-#
-#tls_port = "16514"
-
-# Override the port for accepting insecure TCP connections
-# This can be a port number, or service name
-#
-#tcp_port = "16509"
-
-
-# Override the default configuration which binds to all network
-# interfaces. This can be a numeric IPv4/6 address, or hostname
-#
-#listen_addr = "192.168.0.1"
-
-
-# Flag toggling mDNS advertizement of the libvirt service.
-#
-# Alternatively can disable for all services on a host by
-# stopping the Avahi daemon
-#
-# This is enabled by default, uncomment this to disable it
-#mdns_adv = 0
-
-# Override the default mDNS advertizement name. This must be
-# unique on the immediate broadcast network.
-#
-# The default is "Virtualization Host HOSTNAME", where HOSTNAME
-# is subsituted for the short hostname of the machine (without domain)
-#
-#mdns_name = "Virtualization Host Joe Demo"
-
-
-#################################################################
-#
-# UNIX socket access controls
-#
-
-# Set the UNIX domain socket group ownership. This can be used to
-# allow a 'trusted' set of users access to management capabilities
-# without becoming root.
-#
-# This is restricted to 'root' by default.
-#unix_sock_group = "libvirt"
-
-# Set the UNIX socket permissions for the R/O socket. This is used
-# for monitoring VM status only
-#
-# Default allows any user. If setting group ownership may want to
-# restrict this to:
-#unix_sock_ro_perms = "0777"
-
-# Set the UNIX socket permissions for the R/W socket. This is used
-# for full management of VMs
-#
-# Default allows only root. If PolicyKit is enabled on the socket,
-# the default will change to allow everyone (eg, 0777)
-#
-# If not using PolicyKit and setting group ownership for access
-# control then you may want to relax this to:
-#unix_sock_rw_perms = "0770"
-
-# Set the name of the directory in which sockets will be found/created.
-#unix_sock_dir = "/var/run/libvirt"
-
-#################################################################
-#
-# Authentication.
-#
-#  - none: do not perform auth checks. If you can connect to the
-#          socket you are allowed. This is suitable if there are
-#          restrictions on connecting to the socket (eg, UNIX
-#          socket permissions), or if there is a lower layer in
-#          the network providing auth (eg, TLS/x509 certificates)
-#
-#  - sasl: use SASL infrastructure. The actual auth scheme is then
-#          controlled from /etc/sasl2/libvirt.conf. For the TCP
-#          socket only GSSAPI & DIGEST-MD5 mechanisms will be used.
-#          For non-TCP or TLS sockets,  any scheme is allowed.
-#
-#  - polkit: use PolicyKit to authenticate. This is only suitable
-#            for use on the UNIX sockets. The default policy will
-#            require a user to supply their own password to gain
-#            full read/write access (aka sudo like), while anyone
-#            is allowed read/only access.
-#
-# Set an authentication scheme for UNIX read-only sockets
-# By default socket permissions allow anyone to connect
-#
-# To restrict monitoring of domains you may wish to enable
-# an authentication mechanism here
-#auth_unix_ro = "none"
-
-# Set an authentication scheme for UNIX read-write sockets
-# By default socket permissions only allow root. If PolicyKit
-# support was compiled into libvirt, the default will be to
-# use 'polkit' auth.
-#
-# If the unix_sock_rw_perms are changed you may wish to enable
-# an authentication mechanism here
-#auth_unix_rw = "none"
-
-# Change the authentication scheme for TCP sockets.
-#
-# If you don't enable SASL, then all TCP traffic is cleartext.
-# Don't do this outside of a dev/test scenario. For real world
-# use, always enable SASL and use the GSSAPI or DIGEST-MD5
-# mechanism in /etc/sasl2/libvirt.conf
-#auth_tcp = "sasl"
-
-# Change the authentication scheme for TLS sockets.
-#
-# TLS sockets already have encryption provided by the TLS
-# layer, and limited authentication is done by certificates
-#
-# It is possible to make use of any SASL authentication
-# mechanism as well, by using 'sasl' for this option
-#auth_tls = "none"
-
-
-
-#################################################################
-#
-# TLS x509 certificate configuration
-#
-
-
-# Override the default server key file path
-#
-#key_file = "/etc/pki/libvirt/private/serverkey.pem"
-
-# Override the default server certificate file path
-#
-#cert_file = "/etc/pki/libvirt/servercert.pem"
-
-# Override the default CA certificate path
-#
-#ca_file = "/etc/pki/CA/cacert.pem"
-
-# Specify a certificate revocation list.
-#
-# Defaults to not using a CRL, uncomment to enable it
-#crl_file = "/etc/pki/CA/crl.pem"
-
-
-
-#################################################################
-#
-# Authorization controls
-#
-
-
-# Flag to disable verification of our own server certificates
-#
-# When libvirtd starts it performs some sanity checks against
-# its own certificates.
-#
-# Default is to always run sanity checks. Uncommenting this
-# will disable sanity checks which is not a good idea
-#tls_no_sanity_certificate = 1
-
-# Flag to disable verification of client certificates
-#
-# Client certificate verification is the primary authentication mechanism.
-# Any client which does not present a certificate signed by the CA
-# will be rejected.
-#
-# Default is to always verify. Uncommenting this will disable
-# verification - make sure an IP whitelist is set
-#tls_no_verify_certificate = 1
-
-
-# A whitelist of allowed x509  Distinguished Names
-# This list may contain wildcards such as
-#
-#    "C=GB,ST=London,L=London,O=Red Hat,CN=*"
-#
-# See the POSIX fnmatch function for the format of the wildcards.
-#
-# NB If this is an empty list, no client can connect, so comment out
-# entirely rather than using empty list to disable these checks
-#
-# By default, no DN's are checked
-#tls_allowed_dn_list = ["DN1", "DN2"]
-
-
-# A whitelist of allowed SASL usernames. The format for usernames
-# depends on the SASL authentication mechanism. Kerberos usernames
-# look like username@REALM
-#
-# This list may contain wildcards such as
-#
-#    "*@EXAMPLE.COM"
-#
-# See the POSIX fnmatch function for the format of the wildcards.
-#
-# NB If this is an empty list, no client can connect, so comment out
-# entirely rather than using empty list to disable these checks
-#
-# By default, no Username's are checked
-#sasl_allowed_username_list = ["joe@EXAMPLE.COM", "fred@EXAMPLE.COM" ]
-
-
-
-#################################################################
-#
-# Processing controls
-#
-
-# The maximum number of concurrent client connections to allow
-# over all sockets combined.
-#max_clients = 20
-
-
-# The minimum limit sets the number of workers to start up
-# initially. If the number of active clients exceeds this,
-# then more threads are spawned, upto max_workers limit.
-# Typically you'd want max_workers to equal maximum number
-# of clients allowed
-#min_workers = 5
-#max_workers = 20
-
-
-# The number of priority workers. If all workers from above
-# pool will stuck, some calls marked as high priority
-# (notably domainDestroy) can be executed in this pool.
-#prio_workers = 5
-
-# Total global limit on concurrent RPC calls. Should be
-# at least as large as max_workers. Beyond this, RPC requests
-# will be read into memory and queued. This directly impact
-# memory usage, currently each request requires 256 KB of
-# memory. So by default upto 5 MB of memory is used
-#
-# XXX this isn't actually enforced yet, only the per-client
-# limit is used so far
-#max_requests = 20
-
-# Limit on concurrent requests from a single client
-# connection. To avoid one client monopolizing the server
-# this should be a small fraction of the global max_requests
-# and max_workers parameter
-#max_client_requests = 5
-
-#################################################################
-#
-# Logging controls
-#
-
-# Logging level: 4 errors, 3 warnings, 2 information, 1 debug
-# basically 1 will log everything possible
-#log_level = 3
-
-# Logging filters:
-# A filter allows to select a different logging level for a given category
-# of logs
-# The format for a filter is:
-#    x:name
-#      where name is a match string e.g. remote or qemu
-# the x prefix is the minimal level where matching messages should be logged
-#    1: DEBUG
-#    2: INFO
-#    3: WARNING
-#    4: ERROR
-#
-# Multiple filter can be defined in a single @filters, they just need to be
-# separated by spaces.
-#
-# e.g:
-# log_filters="3:remote 4:event"
-# to only get warning or errors from the remote layer and only errors from
-# the event layer.
-
-# Logging outputs:
-# An output is one of the places to save logging information
-# The format for an output can be:
-#    x:stderr
-#      output goes to stderr
-#    x:syslog:name
-#      use syslog for the output and use the given name as the ident
-#    x:file:file_path
-#      output to a file, with the given filepath
-# In all case the x prefix is the minimal level, acting as a filter
-#    1: DEBUG
-#    2: INFO
-#    3: WARNING
-#    4: ERROR
-#
-# Multiple output can be defined, they just need to be separated by spaces.
-# e.g.:
-# log_outputs="3:syslog:libvirtd"
-# to log all warnings and errors to syslog under the libvirtd ident
-
-# Log debug buffer size: default 64
-# The daemon keeps an internal debug log buffer which will be dumped in case
-# of crash or upon receiving a SIGUSR2 signal. This setting allows to override
-# the default buffer size in kilobytes.
-# If value is 0 or less the debug log buffer is deactivated
-#log_buffer_size = 64
-
-
-##################################################################
-#
-# Auditing
-#
-# This setting allows usage of the auditing subsystem to be altered:
-#
-#   audit_level == 0  -> disable all auditing
-#   audit_level == 1  -> enable auditing, only if enabled on host (default)
-#   audit_level == 2  -> enable auditing, and exit if disabled on host
-#
-#audit_level = 2
-#
-# If set to 1, then audit messages will also be sent
-# via libvirt logging infrastructure. Defaults to 0
-#
-#audit_logging = 1
-
-###################################################################
-# UUID of the host:
-# Provide the UUID of the host here in case the command
-# 'dmidecode -s system-uuid' does not provide a valid uuid. In case
-# 'dmidecode' does not provide a valid UUID and none is provided here, a
-# temporary UUID will be generated.
-# Keep the format of the example UUID below. UUID must not have all digits
-# be the same.
-
-# NB This default all-zeros UUID will not work. Replace
-# it with the output of the 'uuidgen' command and then
-# uncomment this entry
-#host_uuid = "00000000-0000-0000-0000-000000000000"
-
-###################################################################
-# Keepalive protocol:
-# This allows libvirtd to detect broken client connections or even
-# dead client.  A keepalive message is sent to a client after
-# keepalive_interval seconds of inactivity to check if the client is
-# still responding; keepalive_count is a maximum number of keepalive
-# messages that are allowed to be sent to the client without getting
-# any response before the connection is considered broken.  In other
-# words, the connection is automatically closed approximately after
-# keepalive_interval * (keepalive_count + 1) seconds since the last
-# message received from the client.  If keepalive_interval is set to
-# -1, libvirtd will never send keepalive requests; however clients
-# can still send them and the deamon will send responses.  When
-# keepalive_count is set to 0, connections will be automatically
-# closed after keepalive_interval seconds of inactivity without
-# sending any keepalive messages.
-#
-#keepalive_interval = 5
-#keepalive_count = 5
-#
-# If set to 1, libvirtd will refuse to talk to clients that do not
-# support keepalive protocol.  Defaults to 0.
-#
-#keepalive_required = 1
diff --git a/import-layers/meta-virtualization/recipes-extended/libvirt/libvirt/libvirtd.sh b/import-layers/meta-virtualization/recipes-extended/libvirt/libvirt/libvirtd.sh
deleted file mode 100755
index 29dbf39..0000000
--- a/import-layers/meta-virtualization/recipes-extended/libvirt/libvirt/libvirtd.sh
+++ /dev/null
@@ -1,103 +0,0 @@
-#!/bin/sh
-### BEGIN INIT INFO
-# Provides: libvirtd
-# Required-Start: $local_fs $network dbus
-# Required-Stop: $local_fs $network dbus
-# Default-Start: 2 3 4 5
-# Default-Stop: 0 1 6
-### END INIT INFO
-
-if [ -f /lib/lsb/init-functions ]
-then
-    . /lib/lsb/init-functions
-else
-    # int log_begin_message (char *message)
-    log_begin_msg () {
-        if [ -z "$1" ]; then
-	    return 1
-        fi
-        echo " * $@"
-    }
-
-    # int log_end_message (int exitstatus)
-    log_end_msg () {
-	
-    # If no arguments were passed, return
-	[ -z "$1" ] && return 1
-	
-    # Only do the fancy stuff if we have an appropriate terminal
-    # and if /usr is already mounted
-	TPUT=/usr/bin/tput
-	EXPR=/usr/bin/expr
-	if [ -x $TPUT ] && [ -x $EXPR ] && $TPUT hpa 60 >/dev/null 2>&1; then
-	    COLS=`$TPUT cols`
-	    if [ -n "$COLS" ]; then
-		COL=`$EXPR $COLS - 7`
-	    else
-		COL=73
-	    fi
-	    UP=`$TPUT cuu1`
-	    END=`$TPUT hpa $COL`
-	    START=`$TPUT hpa 0`
-	    RED=`$TPUT setaf 1`
-	    NORMAL=`$TPUT op`
-	    if [ $1 -eq 0 ]; then
-		echo "$UP$END[ ok ]"
-	    else
-		echo -e "$UP$START $RED*$NORMAL$END[${RED}fail${NORMAL}]"
-	    fi
-	else
-	    if [ $1 -eq 0 ]; then
-		echo "   ...done."
-	    else
-		echo "   ...fail!"
-	    fi
-	fi
-	return $1
-    }
-    
-    log_warning_msg () {
-	if log_use_fancy_output; then
-	    YELLOW=`$TPUT setaf 3`
-	    NORMAL=`$TPUT op`
-	    echo "$YELLOW*$NORMAL $@"
-	else
-	    echo "$@"
-	fi
-    }
-
-fi
-
-case "$1" in
-        start)
-                if [ -e /var/run/libvirtd.pid ]; then
-                        if [ -d /proc/$(cat /var/run/libvirtd.pid) ]; then
-                                echo "virtualization library already started; not starting."
-                        else
-                                echo "Removing stale PID file /var/run/libvirtd.pid."
-                                rm -f /var/run/libvirtd.pid
-                        fi
-                fi
-                log_begin_msg "Starting virtualization library daemon: libvirtd"
-                if [ ! -e /var/run/libvirtd.pid ]; then
-                    start-stop-daemon -K -x /usr/bin/dnsmasq --pidfile /var/run/libvirt/network/default.pid
-                fi
-		start-stop-daemon --start --quiet --pidfile /var/run/libvirtd.pid --exec /usr/sbin/libvirtd -- --daemon --listen
-                log_end_msg $?
-                ;;
-        stop)
-                log_begin_msg "Stopping virtualization library daemon: libvirtd"
-		start-stop-daemon --stop --quiet --retry 3 --exec /usr/sbin/libvirtd --pidfile /var/run/libvirtd.pid
-                log_end_msg $?
-                rm -f /var/run/libvirtd.pid
-                ;;
-        restart)
-                $0 stop
-                sleep 1
-                $0 start
-                ;;
-        *)
-                echo "Usage: $0 {start|stop|restart}"
-                exit 1
-                ;;
-esac
diff --git a/import-layers/meta-virtualization/recipes-extended/libvirt/libvirt/qemu-fix-crash-in-qemuOpen.patch b/import-layers/meta-virtualization/recipes-extended/libvirt/libvirt/qemu-fix-crash-in-qemuOpen.patch
deleted file mode 100644
index 3cf9e83..0000000
--- a/import-layers/meta-virtualization/recipes-extended/libvirt/libvirt/qemu-fix-crash-in-qemuOpen.patch
+++ /dev/null
@@ -1,39 +0,0 @@
-From 74bff2509080912ea8abf1de8fd95fa2412b659a Mon Sep 17 00:00:00 2001
-From: =?UTF-8?q?J=C3=A1n=20Tomko?= <jtomko@redhat.com>
-Date: Thu, 11 Apr 2013 11:37:25 +0200
-Subject: [PATCH] qemu: fix crash in qemuOpen
-
-commit 74bff2509080912ea8abf1de8fd95fa2412b659a from upsteam
-git://libvirt.org/libvirt.git
-
-If the path part of connection URI is not present, cfg is used
-unitialized.
-
-https://bugzilla.redhat.com/show_bug.cgi?id=950855
----
- src/qemu/qemu_driver.c |    2 +-
- 1 files changed, 1 insertions(+), 1 deletions(-)
-
-diff --git a/src/qemu/qemu_driver.c b/src/qemu/qemu_driver.c
-index 2c0d7d1..0d41e39 100644
---- a/src/qemu/qemu_driver.c
-+++ b/src/qemu/qemu_driver.c
-@@ -1026,6 +1026,7 @@ static virDrvOpenStatus qemuOpen(virConnectPtr conn,
-             goto cleanup;
-         }
- 
-+        cfg = virQEMUDriverGetConfig(qemu_driver);
-         if (conn->uri->path == NULL) {
-             virReportError(VIR_ERR_INTERNAL_ERROR,
-                            _("no QEMU URI path given, try %s"),
-@@ -1033,7 +1034,6 @@ static virDrvOpenStatus qemuOpen(virConnectPtr conn,
-             goto cleanup;
-         }
- 
--        cfg = virQEMUDriverGetConfig(qemu_driver);
-         if (cfg->privileged) {
-             if (STRNEQ(conn->uri->path, "/system") &&
-                 STRNEQ(conn->uri->path, "/session")) {
--- 
-1.7.1
-
diff --git a/import-layers/meta-virtualization/recipes-extended/libvirt/libvirt/run-ptest b/import-layers/meta-virtualization/recipes-extended/libvirt/libvirt/run-ptest
deleted file mode 100644
index a434b18..0000000
--- a/import-layers/meta-virtualization/recipes-extended/libvirt/libvirt/run-ptest
+++ /dev/null
@@ -1,3 +0,0 @@
-#!/bin/sh
-
-make -C tests -k check-TESTS
diff --git a/import-layers/meta-virtualization/recipes-extended/libvirt/libvirt/runptest.patch b/import-layers/meta-virtualization/recipes-extended/libvirt/libvirt/runptest.patch
deleted file mode 100644
index b7609a8..0000000
--- a/import-layers/meta-virtualization/recipes-extended/libvirt/libvirt/runptest.patch
+++ /dev/null
@@ -1,117 +0,0 @@
-Update context for 1.3.5.
-
-Signed-off-by: Kai Kang <kai.kang@windriver.com>
----
-Add 'install-ptest' rule.
-Change TESTS_ENVIRONMENT to allow running outside build dir.
-
-Signed-off-by: Mihaela Sendrea <mihaela.sendrea@enea.com>
-Upstream-status: Pending
----
-diff --git a/tests/Makefile.am b/tests/Makefile.am
-index 0c4ad3c..bb4e31a 100644
---- a/tests/Makefile.am
-+++ b/tests/Makefile.am
-@@ -33,11 +33,13 @@ INCLUDES = \
- 	-I$(top_srcdir)/src/conf \
- 	$(GETTEXT_CPPFLAGS)
- 
-+PTEST_DIR ?= $(libdir)/libvirt/ptest
-+
- AM_CFLAGS = \
--	-Dabs_builddir="\"$(abs_builddir)\"" \
--	-Dabs_topbuilddir="\"$(abs_topbuilddir)\"" \
--	-Dabs_srcdir="\"$(abs_srcdir)\"" \
--	-Dabs_topsrcdir="\"$(abs_topsrcdir)\"" \
-+	-Dabs_builddir="\"$(PTEST_DIR)/tests\"" \
-+	-Dabs_topbuilddir="\"$(PTEST_DIR)\"" \
-+	-Dabs_srcdir="\"$(PTEST_DIR)/tests\"" \
-+	-Dabs_topsrcdir="\"$(PTEST_DIR)\"" \
- 	$(LIBXML_CFLAGS) \
- 	$(LIBNL_CFLAGS) \
- 	$(GNUTLS_CFLAGS) \
-@@ -62,7 +64,7 @@ QEMULIB_LDFLAGS = \
- 
- if WITH_DRIVER_MODULES
- INCLUDES += \
--	-DTEST_DRIVER_DIR=\"$(top_builddir)/src/.libs\"
-+	-DTEST_DRIVER_DIR=\"$(PTEST_DIR)/src/.libs\"
- endif WITH_DRIVER_MODULES
- 
- PROBES_O =
-@@ -483,17 +485,15 @@ TESTS = $(test_programs) \
- # Also, BSD sh doesn't like 'a=b b=$$a', so we can't use an
- # intermediate shell variable, but must do all the expansion in make
- 
--lv_abs_top_builddir=$(shell cd '$(top_builddir)' && pwd)
--
- VIR_TEST_EXPENSIVE ?= $(VIR_TEST_EXPENSIVE_DEFAULT)
- TESTS_ENVIRONMENT =				\
--  abs_top_builddir=$(lv_abs_top_builddir)	\
--  abs_top_srcdir=`cd '$(top_srcdir)'; pwd`	\
--  abs_builddir=$(abs_builddir)			\
--  abs_srcdir=$(abs_srcdir)			\
--  CONFIG_HEADER="$(lv_abs_top_builddir)/config.h"	\
-+  abs_top_builddir="$(PTEST_DIR)"             \
-+  abs_top_srcdir="$(PTEST_DIR)"               \
-+  abs_builddir="$(PTEST_DIR)/tests"           \
-+  abs_srcdir="$(PTEST_DIR)/tests"             \
-+  CONFIG_HEADER="$(PTEST_DIR)/config.h"       \
-   SHELL="$(SHELL)"				\
--  LIBVIRT_DRIVER_DIR="$(lv_abs_top_builddir)/src/.libs" \
-+  LIBVIRT_DRIVER_DIR="$(PTEST_DIR)/src/.libs" \
-   LIBVIRT_AUTOSTART=0				\
-   LC_ALL=C					\
-   VIR_TEST_EXPENSIVE=$(VIR_TEST_EXPENSIVE)	\
-@@ -1388,5 +1388,51 @@ else ! WITH_CIL
- EXTRA_DIST += objectlocking.ml
- endif ! WITH_CIL
- 
-+buildtest-TESTS: $(TESTS) $(test_libraries) $(test_helpers)
-+
-+PTESTS = $(TESTS) $(test_helpers) test-lib.sh schematestutils.sh
-+
-+install-ptest:
-+	list='$(TESTS) $(test_helpers) test-lib.sh schematestutils.sh'
-+	install -d $(DEST_DIR)/tools
-+	@(if [ -d ../tools/.libs ] ; then cd ../tools/.libs; fi; \
-+	install * $(DEST_DIR)/tools)
-+	install -d $(DEST_DIR)/src/network
-+	cp ../src/network/*.xml $(DEST_DIR)/src/network
-+	install -d $(DEST_DIR)/src/cpu
-+	cp ../src/cpu/*.xml $(DEST_DIR)/src/cpu
-+	install ../src/libvirt_iohelper $(DEST_DIR)/src
-+	install -D ../daemon/libvirtd $(DEST_DIR)/daemon/libvirtd
-+	install -D ../daemon/libvirtd.conf $(DEST_DIR)/daemon/libvirtd.conf
-+	@(if [ -d ../daemon/.libs ] ; then cd ../daemon/.libs; fi; \
-+	install * $(DEST_DIR)/daemon)
-+	install -d $(DEST_DIR)/src/.libs
-+	@(if [ -d ../src/.libs ] ; then cd ../src/.libs; fi; \
-+	install * $(DEST_DIR)/src/.libs)
-+	install -d $(DEST_DIR)/docs/schemas
-+	cp ../docs/schemas/*.rng $(DEST_DIR)/docs/schemas
-+	cp -r ../build-aux $(DEST_DIR)
-+	install -d $(DEST_DIR)/examples/xml
-+	cp -r ../examples/xml/test $(DEST_DIR)/examples/xml
-+	install -d $(DEST_DIR)/tests/.libs
-+	find . -type d -name "*xml2xml*" -exec cp -r {} $(DEST_DIR)/tests \;
-+	find . -type d -name "*data" -exec cp -r {} $(DEST_DIR)/tests \;
-+	@(for file in $(PTESTS); do \
-+		if [ -f .libs/$$file ]; then \
-+			install .libs/$$file $(DEST_DIR)/tests; \
-+		else \
-+			install $$file $(DEST_DIR)/tests; \
-+		fi; \
-+	done;)
-+	@(if [ -d .libs ]; then install .libs/*.so $(DEST_DIR)/tests/.libs; fi;)
-+	cp ../config.h $(DEST_DIR)
-+	cp Makefile $(DEST_DIR)/tests
-+	sed -i -e 's/^Makefile:/_Makefile:/' $(DEST_DIR)/tests/Makefile
-+	cp ../Makefile $(DEST_DIR)
-+	sed -i -e 's|^Makefile:|_Makefile:|' $(DEST_DIR)/Makefile
-+	sed -i -e 's|$(BUILD_DIR)|$(PTEST_DIR)|g' $(DEST_DIR)/tests/Makefile
-+	sed -i -e 's|$(BUILD_DIR)|$(PTEST_DIR)|g' $(DEST_DIR)/Makefile
-+	sed -i -e 's|^\(.*\.log:\) \(.*EXEEXT.*\)|\1|g' $(DEST_DIR)/tests/Makefile
-+
- CLEANFILES = *.cov *.gcov .libs/*.gcda .libs/*.gcno *.gcno *.gcda *.cmi *.cmx \
- 	objectlocking-files.txt
diff --git a/import-layers/meta-virtualization/recipes-extended/libvirt/libvirt/tests-allow-separated-src-and-build-dirs.patch b/import-layers/meta-virtualization/recipes-extended/libvirt/libvirt/tests-allow-separated-src-and-build-dirs.patch
deleted file mode 100644
index 3964865..0000000
--- a/import-layers/meta-virtualization/recipes-extended/libvirt/libvirt/tests-allow-separated-src-and-build-dirs.patch
+++ /dev/null
@@ -1,57 +0,0 @@
-From 884b6e3724b75cd92766d5386455983e3557a286 Mon Sep 17 00:00:00 2001
-From: Mark Asselstine <mark.asselstine@windriver.com>
-Date: Fri, 2 May 2014 13:45:05 -0400
-Subject: [PATCH] tests: allow separated src and build dirs
-
-Fixup Makefile.am to search for static files back in srcdir.
-
-Signed-off-by: Mark Asselstine <mark.asselstine@windriver.com>
----
- tests/Makefile.am | 14 +++++++-------
- 1 file changed, 7 insertions(+), 7 deletions(-)
-
-diff --git a/tests/Makefile.am b/tests/Makefile.am
-index 0da514b..b8d7c19 100644
---- a/tests/Makefile.am
-+++ b/tests/Makefile.am
-@@ -1006,22 +1006,22 @@ install-ptest:
- 	@(if [ -d ../tools/.libs ] ; then cd ../tools/.libs; fi; \
- 	install * $(DEST_DIR)/tools)
- 	install -d $(DEST_DIR)/src/network
--	cp ../src/network/*.xml $(DEST_DIR)/src/network
-+	cp $(top_srcdir)/src/network/*.xml $(DEST_DIR)/src/network
- 	install -d $(DEST_DIR)/src/cpu
--	cp ../src/cpu/*.xml $(DEST_DIR)/src/cpu
-+	cp $(top_srcdir)/src/cpu/*.xml $(DEST_DIR)/src/cpu
- 	install ../src/libvirt_iohelper $(DEST_DIR)/src
- 	install -D ../daemon/libvirtd $(DEST_DIR)/daemon/libvirtd
--	install -D ../daemon/libvirtd.conf $(DEST_DIR)/daemon/libvirtd.conf
-+	install -D $(top_srcdir)/daemon/libvirtd.conf $(DEST_DIR)/daemon/libvirtd.conf
- 	@(if [ -d ../daemon/.libs ] ; then cd ../daemon/.libs; fi; \
- 	install * $(DEST_DIR)/daemon)
- 	install -d $(DEST_DIR)/src/.libs
- 	@(if [ -d ../src/.libs ] ; then cd ../src/.libs; fi; \
- 	install * $(DEST_DIR)/src/.libs)
- 	install -d $(DEST_DIR)/docs/schemas
--	cp ../docs/schemas/*.rng $(DEST_DIR)/docs/schemas
--	cp -r ../build-aux $(DEST_DIR)
-+	cp $(top_srcdir)/docs/schemas/*.rng $(DEST_DIR)/docs/schemas
-+	cp -r $(top_srcdir)/build-aux $(DEST_DIR)
- 	install -d $(DEST_DIR)/examples/xml
--	cp -r ../examples/xml/test $(DEST_DIR)/examples/xml
-+	cp -r $(top_srcdir)/examples/xml/test $(DEST_DIR)/examples/xml
- 	install -d $(DEST_DIR)/tests/.libs
- 	find . -type d -name "*xml2xml*" -exec cp -r {} $(DEST_DIR)/tests \;
- 	find . -type d -name "*data" -exec cp -r {} $(DEST_DIR)/tests \;
-@@ -1029,7 +1029,7 @@ install-ptest:
- 		if [ -f .libs/$$file ]; then \
- 			install .libs/$$file $(DEST_DIR)/tests; \
- 		else \
--			install $$file $(DEST_DIR)/tests; \
-+			install $(srcdir)/$$file $(DEST_DIR)/tests; \
- 		fi; \
- 	done;)
- 	@(if [ -d .libs ]; then install .libs/*.so $(DEST_DIR)/tests/.libs; fi;)
--- 
-1.8.3.2
-
diff --git a/import-layers/meta-virtualization/recipes-extended/libvirt/libvirt/tools-add-libvirt-net-rpc-to-virt-host-validate-when.patch b/import-layers/meta-virtualization/recipes-extended/libvirt/libvirt/tools-add-libvirt-net-rpc-to-virt-host-validate-when.patch
deleted file mode 100644
index a7fc727..0000000
--- a/import-layers/meta-virtualization/recipes-extended/libvirt/libvirt/tools-add-libvirt-net-rpc-to-virt-host-validate-when.patch
+++ /dev/null
@@ -1,89 +0,0 @@
-From a790bfe8fa7b24b68cb6f9a1b7205fda2c6d558e Mon Sep 17 00:00:00 2001
-From: Bruce Ashfield <bruce.ashfield@windriver.com>
-Date: Fri, 2 Aug 2013 11:38:43 -0400
-Subject: [PATCH] tools: add libvirt-net-rpc to virt-host-validate when TLS is
- enabled
-
-When gnu-tls is enabled for libvirt references to virNetTLSInit are
-generated in libvirt. Any binaries linking against libvirt, must also
-link against libvirt-net-rpc which provides the implementation.
-
-Signed-off-by: Bruce Ashfield <bruce.ashfield@windriver.com>
-[ywei: rebased to libvirt-1.3.2]
-Signed-off-by: Yunguo Wei <yunguo.wei@windriver.com>
----
- examples/Makefile.am | 19 +++++++++++++++++++
- tools/Makefile.am    | 13 +++++++++++++
- 2 files changed, 32 insertions(+)
-
-diff --git a/examples/Makefile.am b/examples/Makefile.am
-index 2adcefb..fff49d4 100644
---- a/examples/Makefile.am
-+++ b/examples/Makefile.am
-@@ -39,6 +39,10 @@ INCLUDES = -I$(top_builddir)/include -I$(top_srcdir)/include -I$(top_srcdir) \
- LDADD = $(STATIC_BINARIES) $(WARN_CFLAGS) $(COVERAGE_LDFLAGS) \
- 	$(top_builddir)/src/libvirt.la $(top_builddir)/gnulib/lib/libgnu.la
- 
-+if WITH_GNUTLS
-+LDADD += $(top_builddir)/src/libvirt-net-rpc.la
-+endif
-+
- noinst_PROGRAMS=dominfo/info1 dommigrate/dommigrate domsuspend/suspend \
- 	domtop/domtop hellolibvirt/hellolibvirt object-events/event-test \
- 	openauth/openauth rename/rename
-@@ -52,6 +56,21 @@ object_events_event_test_SOURCES = object-events/event-test.c
- openauth_openauth_SOURCES = openauth/openauth.c
- rename_rename_SOURCES = rename/rename.c
- 
-+if WITH_GNUTLS
-+dominfo_info1_LDADD = $(top_builddir)/src/libvirt-net-rpc.la  \
-+               $(LDADD)    \
-+               $(NULL)
-+domsuspend_suspend_LDADD = $(top_builddir)/src/libvirt-net-rpc.la  \
-+               $(LDADD)    \
-+               $(NULL)
-+hellolibvirt_hellolibvirt_LDADD = $(top_builddir)/src/libvirt-net-rpc.la  \
-+               $(LDADD)    \
-+               $(NULL)
-+openauth_openauth_LDADD = $(top_builddir)/src/libvirt-net-rpc.la  \
-+               $(LDADD)   \
-+               $(NULL)
-+endif
-+
- if WITH_APPARMOR_PROFILES
- apparmordir = $(sysconfdir)/apparmor.d/
- apparmor_DATA = \
-diff --git a/tools/Makefile.am b/tools/Makefile.am
-index 0be3567..b3227a7 100644
---- a/tools/Makefile.am
-+++ b/tools/Makefile.am
-@@ -169,6 +169,13 @@ virt_host_validate_LDADD = \
- 		../gnulib/lib/libgnu.la				\
- 		$(NULL)
- 
-+if WITH_GNUTLS
-+virt_host_validate_LDADD += ../src/libvirt-net-rpc.la \
-+                            ../gnulib/lib/libgnu.la   \
-+                            $(NULL)
-+endif
-+
-+
- virt_host_validate_CFLAGS = \
- 		$(LIBXML_CFLAGS)				\
- 		$(WARN_CFLAGS)					\
-@@ -256,6 +263,12 @@ virt_admin_CFLAGS =						\
- 		$(READLINE_CFLAGS)
- BUILT_SOURCES =
- 
-+if WITH_GNUTLS
-+virsh_LDADD += ../src/libvirt-net-rpc.la \
-+               ../gnulib/lib/libgnu.la   \
-+               $(NULL)
-+endif
-+
- if WITH_WIN_ICON
- virsh_LDADD += virsh_win_icon.$(OBJEXT)
- 
--- 
-1.9.1
-
diff --git a/import-layers/meta-virtualization/recipes-extended/libvirt/libvirt_1.3.5.bb b/import-layers/meta-virtualization/recipes-extended/libvirt/libvirt_1.3.5.bb
deleted file mode 100644
index 35fd577..0000000
--- a/import-layers/meta-virtualization/recipes-extended/libvirt/libvirt_1.3.5.bb
+++ /dev/null
@@ -1,313 +0,0 @@
-DESCRIPTION = "A toolkit to interact with the virtualization capabilities of recent versions of Linux." 
-HOMEPAGE = "http://libvirt.org"
-LICENSE = "LGPLv2.1+ & GPLv2+"
-LICENSE_${PN}-ptest = "GPLv2+ & LGPLv2.1+"
-LIC_FILES_CHKSUM = "file://COPYING;md5=b234ee4d69f5fce4486a80fdaf4a4263 \
-                    file://COPYING.LESSER;md5=4b54a1fd55a448865a0b32d41598759d"
-SECTION = "console/tools"
-
-DEPENDS = "bridge-utils gnutls libxml2 lvm2 avahi parted curl libpcap util-linux e2fsprogs pm-utils \
-	   iptables dnsmasq readline libtasn1 libxslt-native acl libdevmapper libtirpc \
-	   ${@bb.utils.contains('PACKAGECONFIG', 'polkit', 'shadow-native', '', d)}"
-
-# libvirt-guests.sh needs gettext.sh
-#
-RDEPENDS_${PN} = "gettext-runtime"
-
-RDEPENDS_${PN}-ptest += "make gawk perl"
-
-RDEPENDS_libvirt-libvirtd += "bridge-utils iptables pm-utils dnsmasq netcat-openbsd"
-RDEPENDS_libvirt-libvirtd_append_x86-64 = " dmidecode"
-RDEPENDS_libvirt-libvirtd_append_x86 = " dmidecode"
-
-#connman blocks the 53 port and libvirtd can't start its DNS service
-RCONFLICTS_${PN}_libvirtd = "connman"
-
-SRC_URI = "http://libvirt.org/sources/libvirt-${PV}.tar.gz;name=libvirt \
-           file://tools-add-libvirt-net-rpc-to-virt-host-validate-when.patch \
-           file://libvirtd.sh \
-           file://libvirtd.conf \
-           file://dnsmasq.conf \
-           file://runptest.patch \
-           file://run-ptest \
-           file://tests-allow-separated-src-and-build-dirs.patch \
-           file://libvirt-use-pkg-config-to-locate-libcap.patch \
-           file://0001-to-fix-build-error.patch \
-           file://Revert-build-add-prefix-to-SYSTEMD_UNIT_DIR.patch \
-           file://install-missing-file.patch \
-           file://0001-nsslinktest-also-build-virAtomic.h.patch \
-           file://0001-qemu-Let-empty-default-VNC-password-work-as-document.patch \
-           file://0001-ptest-add-missing-test_helper-files.patch \
-           file://0001-ptest-Remove-Windows-1252-check-from-esxutilstest.patch \
-	   file://0001-Added-configure-variable-for-placing-systemd-untis-l.patch \
-	   file://configure.ac-search-for-rpc-rpc.h-in-the-sysroot.patch \
-	   file://Makefiles-Add-more-XDR_CFLAGS-as-needed.patch \
-          "
-
-SRC_URI[libvirt.md5sum] = "f9dc1e63d559eca50ae0ee798a4c6c6d"
-SRC_URI[libvirt.sha256sum] = "93a23c44eb431da46c9458f95a66e29c9b98e37515d44b6be09e75b35ec94ac8"
-
-inherit autotools gettext update-rc.d pkgconfig ptest systemd
-
-CACHED_CONFIGUREVARS += "\
-ac_cv_path_XMLLINT=/usr/bin/xmllint \
-ac_cv_path_XMLCATLOG=/usr/bin/xmlcatalog \
-ac_cv_path_AUGPARSE=/usr/bin/augparse \
-ac_cv_path_DNSMASQ=/usr/bin/dnsmasq \
-ac_cv_path_BRCTL=/usr/sbin/brctl \
-ac_cv_path_TC=/sbin/tc \
-ac_cv_path_UDEVADM=/sbin/udevadm \
-ac_cv_path_MODPROBE=/sbin/modprobe \
-ac_cv_path_IP_PATH=/bin/ip \
-ac_cv_path_IPTABLES_PATH=/usr/sbin/iptables \
-ac_cv_path_IP6TABLES_PATH=/usr/sbin/ip6tables \
-ac_cv_path_MOUNT=/bin/mount \
-ac_cv_path_UMOUNT=/bin/umount \
-ac_cv_path_MKFS=/usr/sbin/mkfs \
-ac_cv_path_SHOWMOUNT=/usr/sbin/showmount \
-ac_cv_path_PVCREATE=/usr/sbin/pvcreate \
-ac_cv_path_VGCREATE=/usr/sbin/vgcreate \
-ac_cv_path_LVCREATE=/usr/sbin/lvcreate \
-ac_cv_path_PVREMOVE=/usr/sbin/pvremove \
-ac_cv_path_VGREMOVE=/usr/sbin/vgremove \
-ac_cv_path_LVREMOVE=/usr/sbin/lvremove \
-ac_cv_path_LVCHANGE=/usr/sbin/lvchange \
-ac_cv_path_VGCHANGE=/usr/sbin/vgchange \
-ac_cv_path_VGSCAN=/usr/sbin/vgscan \
-ac_cv_path_PVS=/usr/sbin/pvs \
-ac_cv_path_VGS=/usr/sbin/vgs \
-ac_cv_path_LVS=/usr/sbin/lvs \
-ac_cv_path_PARTED=/usr/sbin/parted \
-ac_cv_path_DMSETUP=/usr/sbin/dmsetup"
-
-# Ensure that libvirt uses polkit rather than policykit, whether the host has
-# pkcheck installed or not, and ensure the path is correct per our config.
-CACHED_CONFIGUREVARS += "ac_cv_path_PKCHECK_PATH=${bindir}/pkcheck"
-
-# Some other possible paths we are not yet setting
-#ac_cv_path_RPCGEN=
-#ac_cv_path_XSLTPROC=
-#ac_cv_path_RADVD=
-#ac_cv_path_UDEVSETTLE=
-#ac_cv_path_EBTABLES_PATH=
-#ac_cv_path_PKG_CONFIG=
-#ac_cv_path_ac_pt_PKG_CONFIG
-#ac_cv_path_POLKIT_AUTH=
-#ac_cv_path_DTRACE=
-#ac_cv_path_ISCSIADM=
-#ac_cv_path_MSGFMT=
-#ac_cv_path_GMSGFMT=
-#ac_cv_path_XGETTEXT=
-#ac_cv_path_MSGMERGE=
-#ac_cv_path_SCRUB=
-#ac_cv_path_PYTHON=
-
-ALLOW_EMPTY_${PN} = "1"
-
-PACKAGES =+ "${PN}-libvirtd ${PN}-virsh"
-
-ALLOW_EMPTY_${PN}-libvirtd = "1"
-
-FILES_${PN}-libvirtd = " \
-	${sysconfdir}/init.d \
-	${sysconfdir}/sysctl.d \
-	${sysconfdir}/logrotate.d \
-	${sysconfdir}/libvirt/libvirtd.conf \
-        /usr/lib/sysctl.d/60-libvirtd.conf \
-	${sbindir}/libvirtd \
-	${systemd_unitdir}/system/* \
-	${@bb.utils.contains('DISTRO_FEATURES', 'sysvinit', '', '${libexecdir}/libvirt-guests.sh', d)} \
-        "
-
-FILES_${PN}-virsh = "${bindir}/virsh"
-FILES_${PN} += "${libdir}/libvirt/connection-driver \
-	    ${datadir}/augeas \
-	    ${@bb.utils.contains('PACKAGECONFIG', 'polkit', '${datadir}/polkit-1', '', d)} \
-	    "
-
-FILES_${PN}-dbg += "${libdir}/libvirt/connection-driver/.debug ${libdir}/libvirt/lock-driver/.debug"
-FILES_${PN}-staticdev += "${libdir}/*.a ${libdir}/libvirt/connection-driver/*.a ${libdir}/libvirt/lock-driver/*.a"
-
-CONFFILES_${PN} += "${sysconfdir}/libvirt/libvirt.conf \
-                    ${sysconfdir}/libvirt/lxc.conf \
-                    ${sysconfdir}/libvirt/qemu-lockd.conf \
-                    ${sysconfdir}/libvirt/qemu.conf \
-                    ${sysconfdir}/libvirt/virt-login-shell.conf \
-                    ${sysconfdir}/libvirt/virtlockd.conf"
-
-CONFFILES_${PN}-libvirtd = "${sysconfdir}/logrotate.d/libvirt ${sysconfdir}/logrotate.d/libvirt.lxc \
-                            ${sysconfdir}/logrotate.d/libvirt.qemu ${sysconfdir}/logrotate.d/libvirt.uml \
-                            ${sysconfdir}/libvirt/libvirtd.conf \
-                            /usr/lib/sysctl.d/libvirtd.conf"
-
-INITSCRIPT_PACKAGES = "${PN}-libvirtd"
-INITSCRIPT_NAME_${PN}-libvirtd = "libvirtd"
-INITSCRIPT_PARAMS_${PN}-libvirtd = "defaults 72"
-
-SYSTEMD_PACKAGES = "${PN}-libvirtd"
-SYSTEMD_SERVICE_${PN}-libvirtd = " \
-    libvirtd.service \
-    virtlockd.service \
-    libvirt-guests.service \
-    virtlockd.socket \
-    "
-
-
-PRIVATE_LIBS_${PN}-ptest = " \
-	libvirt-lxc.so.0 \
-	libvirt.so.0 \
-	libvirt-qemu.so.0 \
-	lockd.so \
-	libvirt_driver_secret.so \
-	libvirt_driver_nodedev.so \
-	libvirt_driver_vbox.so \
-	libvirt_driver_interface.so \
-	libvirt_driver_uml.so \
-	libvirt_driver_network.so \
-	libvirt_driver_nwfilter.so \
-	libvirt_driver_qemu.so \
-	libvirt_driver_storage.so \
-	libvirt_driver_lxc.so \
-    "
-
-# xen-minimal config
-#PACKAGECONFIG ??= "xen libxl xen-inotify test remote libvirtd"
-
-# full config
-PACKAGECONFIG ??= "qemu yajl uml openvz vmware vbox esx iproute2 lxc test \
-                   remote macvtap libvirtd netcf udev python ebtables \
-                   ${@bb.utils.contains('DISTRO_FEATURES', 'selinux', 'selinux audit libcap-ng', '', d)} \
-                   ${@bb.utils.contains('DISTRO_FEATURES', 'xen', 'xen libxl xen-inotify', '', d)} \
-                   ${@bb.utils.contains('DISTRO_FEATURES', 'x11', 'polkit', '', d)} \
-                  "
-
-# enable,disable,depends,rdepends
-#
-PACKAGECONFIG[qemu] = "--with-qemu,--without-qemu,qemu,"
-PACKAGECONFIG[yajl] = "--with-yajl,--without-yajl,yajl,yajl"
-PACKAGECONFIG[xen] = "--with-xen,--without-xen,xen,"
-PACKAGECONFIG[xenapi] = "--with-xenapi,--without-xenapi,,"
-PACKAGECONFIG[libxl] = "--with-libxl=${STAGING_DIR_TARGET}/lib,--without-libxl,libxl,"
-PACKAGECONFIG[xen-inotify] = "--with-xen-inotify,--without-xen-inotify,xen,"
-PACKAGECONFIG[uml] = "--with-uml, --without-uml,,"
-PACKAGECONFIG[openvz] = "--with-openvz,--without-openvz,,"
-PACKAGECONFIG[vmware] = "--with-vmware,--without-vmware,,"
-PACKAGECONFIG[phyp] = "--with-phyp,--without-phyp,,"
-PACKAGECONFIG[vbox] = "--with-vbox,--without-vbox,,"
-PACKAGECONFIG[esx] = "--with-esx,--without-esx,,"
-PACKAGECONFIG[hyperv] = "--with-hyperv,--without-hyperv,,"
-PACKAGECONFIG[polkit] = "--with-polkit,--without-polkit,polkit,polkit"
-PACKAGECONFIG[lxc] = "--with-lxc,--without-lxc, lxc,"
-PACKAGECONFIG[test] = "--with-test=yes,--with-test=no,,"
-PACKAGECONFIG[remote] = "--with-remote,--without-remote,,"
-PACKAGECONFIG[macvtap] = "--with-macvtap=yes,--with-macvtap=no,libnl,libnl"
-PACKAGECONFIG[libvirtd] = "--with-libvirtd,--without-libvirtd,,"
-PACKAGECONFIG[netcf] = "--with-netcf,--without-netcf,netcf,netcf"
-PACKAGECONFIG[dtrace] = "--with-dtrace,--without-dtrace,,"
-PACKAGECONFIG[udev] = "--with-udev --with-pciaccess,--without-udev,udev libpciaccess,"
-PACKAGECONFIG[selinux] = "--with-selinux,--without-selinux,libselinux,"
-PACKAGECONFIG[ebtables] = "ac_cv_path_EBTABLES_PATH=/sbin/ebtables,ac_cv_path_EBTABLES_PATH=,ebtables,ebtables"
-PACKAGECONFIG[python] = ",,python,"
-PACKAGECONFIG[sasl] = "--with-sasl,--without-sasl,cyrus-sasl,cyrus-sasl"
-PACKAGECONFIG[iproute2] = "ac_cv_path_IP_PATH=/sbin/ip,ac_cv_path_IP_PATH=,iproute2,iproute2"
-PACKAGECONFIG[numactl] = "--with-numactl,--without-numactl,numactl,"
-PACKAGECONFIG[fuse] = "--with-fuse,--without-fuse,fuse,"
-PACKAGECONFIG[audit] = "--with-audit,--without-audit,audit,"
-PACKAGECONFIG[libcap-ng] = "--with-capng,--without-capng,libcap-ng,"
-PACKAGECONFIG[wireshark] = "--with-wireshark-dissector,--without-wireshark-dissector,wireshark libwsutil,"
-
-# Enable the Python tool support
-require libvirt-python.inc
-
-do_install_append() {
-	install -d ${D}/etc/init.d
-	install -d ${D}/etc/libvirt
-	install -d ${D}/etc/dnsmasq.d
-
-	install -m 0755 ${WORKDIR}/libvirtd.sh ${D}/etc/init.d/libvirtd
-	install -m 0644 ${WORKDIR}/libvirtd.conf ${D}/etc/libvirt/libvirtd.conf
-
-	if ${@bb.utils.contains('DISTRO_FEATURES','sysvinit','true','false',d)}; then
-	    # This will wind up in the libvirtd package, but will NOT be invoked by default.
-	    #
-	    mv ${D}/${libexecdir}/libvirt-guests.sh ${D}/${sysconfdir}/init.d
-	fi
-
-	if ${@bb.utils.contains('DISTRO_FEATURES','systemd','true','false',d)}; then
-	    # This variable is used by libvirtd.service to start libvirtd in the right mode
-	    sed -i '/#LIBVIRTD_ARGS="--listen"/a LIBVIRTD_ARGS="--listen --daemon"' ${D}/${sysconfdir}/sysconfig/libvirtd
-
-	    # We can't use 'notify' when we don't support 'sd_notify' dbus capabilities.
-	    sed -i -e 's/Type=notify/Type=forking/' \
-	           -e '/Type=forking/a PIDFile=${localstatedir}/run/libvirtd.pid' \
-		   ${D}/${systemd_unitdir}/system/libvirtd.service
-	fi
-
-	# The /var/run/libvirt directories created by the Makefile
-	# are wiped out in volatile, we need to create these at boot.
-	rm -rf ${D}${localstatedir}/run
-	install -d ${D}${sysconfdir}/default/volatiles
-	echo "d root root 0755 ${localstatedir}/run/libvirt none" \
-	     > ${D}${sysconfdir}/default/volatiles/99_libvirt
-	echo "d root root 0755 ${localstatedir}/run/libvirt/lockd none" \
-	     >> ${D}${sysconfdir}/default/volatiles/99_libvirt
-	echo "d root root 0755 ${localstatedir}/run/libvirt/lxc none" \
-	     >> ${D}${sysconfdir}/default/volatiles/99_libvirt
-	echo "d root root 0755 ${localstatedir}/run/libvirt/network none" \
-	     >> ${D}${sysconfdir}/default/volatiles/99_libvirt
-	echo "d root root 0755 ${localstatedir}/run/libvirt/qemu none" \
-	     >> ${D}${sysconfdir}/default/volatiles/99_libvirt
-
-	# Manually set permissions and ownership to match polkit recipe
-	if ${@bb.utils.contains('PACKAGECONFIG', 'polkit', 'true', 'false', d)}; then
-		install -d -m 0700 ${D}/${datadir}/polkit-1/rules.d
-		chown polkitd ${D}/${datadir}/polkit-1/rules.d
-		chgrp root ${D}/${datadir}/polkit-1/rules.d
-	else
-		rm -rf ${D}/${datadir}/polkit-1
-	fi
-
-	# Add hook support for libvirt
-	mkdir -p ${D}/etc/libvirt/hooks
-
-	# Force the main dnsmasq instance to bind only to specified interfaces and
-	# to not bind to virbr0. Libvirt will run its own instance on this interface.
-	install -m 644 ${WORKDIR}/dnsmasq.conf ${D}/${sysconfdir}/dnsmasq.d/libvirt-daemon
-
-	# remove .la references to our working diretory
-	for i in `find ${D}${libdir} -type f -name *.la`; do
-	    sed -i -e 's#-L${B}/src/.libs##g' $i
-	done
-}
-
-EXTRA_OECONF += " \
-    --with-init-script=systemd \
-    "
-
-EXTRA_OEMAKE = "BUILD_DIR=${B} DEST_DIR=${D}${PTEST_PATH} PTEST_DIR=${PTEST_PATH} SYSTEMD_UNIT_DIR=${systemd_system_unitdir}"
-
-do_compile_ptest() {
-	oe_runmake -C tests buildtest-TESTS
-}
-
-do_install_ptest() {
-	oe_runmake -C tests install-ptest
-
-	find ${S}/tests -maxdepth 1 -type d -exec cp -r {} ${D}${PTEST_PATH}/tests/ \;
-
-	# remove .la files for ptest, they aren't required and can trigger QA errors
-	for i in `find ${D}${PTEST_PATH} -type f \( -name *.la -o -name *.o \)`; do
-                rm -f $i
-	done
-}
-
-pkg_postinst_libvirt() {
-        if [ -z "$D" ] && [ -e /etc/init.d/populate-volatile.sh ] ; then
-                /etc/init.d/populate-volatile.sh update
-        fi
-}
-
-python () {
-    if not bb.utils.contains('DISTRO_FEATURES', 'sysvinit', True, False, d):
-        d.setVar("INHIBIT_UPDATERCD_BBCLASS", "1")
-}
diff --git a/import-layers/meta-virtualization/recipes-extended/seabios/seabios/hostcc.patch b/import-layers/meta-virtualization/recipes-extended/seabios/seabios/hostcc.patch
deleted file mode 100644
index f665e1a..0000000
--- a/import-layers/meta-virtualization/recipes-extended/seabios/seabios/hostcc.patch
+++ /dev/null
@@ -1,21 +0,0 @@
-diff -ur a/Makefile b/Makefile
---- a/Makefile	2015-02-02 22:02:58.651041951 -0500
-+++ b/Makefile	2015-02-02 23:08:13.884514003 -0500
-@@ -8,7 +8,7 @@
- OUT=out/
- 
- # Common command definitions
--export HOSTCC             := $(CC)
-+export HOSTCC             ?= $(CC)
- export CONFIG_SHELL       := sh
- export KCONFIG_AUTOHEADER := autoconf.h
- export KCONFIG_CONFIG     := $(CURDIR)/.config
-@@ -22,7 +22,7 @@
- OBJDUMP=$(CROSS_PREFIX)objdump
- STRIP=$(CROSS_PREFIX)strip
- PYTHON=python
--CPP=cpp
-+CPP=$(CROSS_PREFIX)cpp
- IASL:=iasl
- LD32BIT_FLAG:=-melf_i386
- 
diff --git a/import-layers/meta-virtualization/recipes-extended/seabios/seabios_1.9.1.bb b/import-layers/meta-virtualization/recipes-extended/seabios/seabios_1.9.1.bb
deleted file mode 100644
index 144b13c..0000000
--- a/import-layers/meta-virtualization/recipes-extended/seabios/seabios_1.9.1.bb
+++ /dev/null
@@ -1,43 +0,0 @@
-DESCRIPTION = "SeaBIOS"
-HOMEPAGE = "http://www.coreboot.org/SeaBIOS"
-LICENSE = "LGPLv3"
-SECTION = "firmware"
-
-SRC_URI = " \
-    https://code.coreboot.org/p/seabios/downloads/get/${PN}-${PV}.tar.gz \
-    file://hostcc.patch \
-    "
-
-LIC_FILES_CHKSUM = "file://COPYING;md5=d32239bcb673463ab874e80d47fae504         \
-                    file://COPYING.LESSER;md5=6a6a8e020838b23406c81b19c1d46df6  \
-                    "
-
-SRC_URI[md5sum] = "e21b6f3e54d492be837ef20d66617f81"
-SRC_URI[sha256sum] = "8a2a562fe5cfd37fe8327cdc4a60accdfe441e235b29e6999fdeb442ba98d608"
-
-FILES_${PN} = "/usr/share/firmware"
-
-DEPENDS = "util-linux-native file-native bison-native flex-native gettext-native iasl-native python-native"
-
-TUNE_CCARGS = ""
-EXTRA_OEMAKE += "HOSTCC='${BUILD_CC}'"
-EXTRA_OEMAKE += "CROSS_PREFIX=${TARGET_PREFIX}"
-
-COMPATIBLE_HOST = "(i.86|x86_64).*-linux"
-
-do_configure() {
-    oe_runmake defconfig
-}
-
-do_compile() {
-    unset CPP
-    unset CPPFLAGS
-    oe_runmake
-}
-
-do_install() {
-    oe_runmake
-    install -d ${D}/usr/share/firmware
-    install -m 0644 out/bios.bin ${D}/usr/share/firmware/
-}
-
diff --git a/import-layers/meta-virtualization/recipes-extended/vgabios/biossums_0.7a.bb b/import-layers/meta-virtualization/recipes-extended/vgabios/biossums_0.7a.bb
deleted file mode 100644
index e66bade..0000000
--- a/import-layers/meta-virtualization/recipes-extended/vgabios/biossums_0.7a.bb
+++ /dev/null
@@ -1,37 +0,0 @@
-DESCRIPTION = "biossums tool for building Plex86/Bochs LGPL VGABios"
-HOMEPAGE = "http://www.nongnu.org/vgabios/"
-LICENSE = "LGPLv2.1"
-SECTION = "firmware"
-
-LIC_FILES_CHKSUM = "file://COPYING;md5=dcf3c825659e82539645da41a7908589"
-
-SRC_URI =  "http://savannah.gnu.org/download/vgabios/vgabios-${PV}.tgz"
-
-SRC_URI[md5sum] = "2c0fe5c0ca08082a9293e3a7b23dc900"
-SRC_URI[sha256sum] = "9d24c33d4bfb7831e2069cf3644936a53ef3de21d467872b54ce2ea30881b865"
-
-BBCLASSEXTEND = "native"
-
-FILES_${PN} = "${bindir}/biossums"
-
-S = "${WORKDIR}/vgabios-${PV}"
-
-do_configure() {
-    # Don't override the compiler or its flags:
-    sed 's,^CC,DISABLED_CC,' -i Makefile
-    sed 's,^CFLAGS,DISABLED_CFLAGS,' -i Makefile
-    sed 's,^LDFLAGS,DISABLED_LDFLAGS,' -i Makefile
-    # Supply the C flags to the compiler:
-    sed 's,-o biossums,$(CFLAGS) -o biossums,' -i Makefile
-}
-
-do_compile() {
-    # clean removes binaries distributed with source
-    oe_runmake clean
-    oe_runmake biossums
-}
-
-do_install() {
-    mkdir -p "${D}${bindir}"
-    install -m 0755 biossums "${D}${bindir}"
-}
diff --git a/import-layers/meta-virtualization/recipes-extended/vgabios/vgabios_0.7a.bb b/import-layers/meta-virtualization/recipes-extended/vgabios/vgabios_0.7a.bb
deleted file mode 100644
index 3394173..0000000
--- a/import-layers/meta-virtualization/recipes-extended/vgabios/vgabios_0.7a.bb
+++ /dev/null
@@ -1,33 +0,0 @@
-DESCRIPTION = "Plex86/Bochs LGPL VGABios"
-HOMEPAGE = "http://www.nongnu.org/vgabios/"
-LICENSE = "LGPLv2.1"
-SECTION = "firmware"
-
-DEPENDS = "dev86-native biossums-native"
-
-LIC_FILES_CHKSUM = "file://COPYING;md5=dcf3c825659e82539645da41a7908589"
-
-SRC_URI =  "http://savannah.gnu.org/download/vgabios/${BPN}-${PV}.tgz"
-
-SRC_URI[md5sum] = "2c0fe5c0ca08082a9293e3a7b23dc900"
-SRC_URI[sha256sum] = "9d24c33d4bfb7831e2069cf3644936a53ef3de21d467872b54ce2ea30881b865"
-
-PR = "r0"
-
-FILES_${PN} = "/usr/share/firmware/${PN}-${PV}*.bin"
-FILES_${PN}-dbg = "/usr/share/firmware/${PN}-${PV}*.debug.bin"
-
-S = "${WORKDIR}/${PN}-${PV}"
-
-do_configure() {
-    # Override to use the native-built biossums tool:
-    sed 's,./biossums,biossums,' -i Makefile
-    sed 's,$(CC) -o biossums biossums.c,touch biossums,' -i Makefile
-}
-
-do_install() {
-    install -d ${D}/usr/share/firmware
-    install -m 0644 VGABIOS-lgpl-latest.bin ${D}/usr/share/firmware/${PN}-${PV}.bin
-    install -m 0644 VGABIOS-lgpl-latest.cirrus.bin ${D}/usr/share/firmware/${PN}-${PV}.cirrus.bin
-}
-
diff --git a/import-layers/meta-virtualization/recipes-extended/xen/README b/import-layers/meta-virtualization/recipes-extended/xen/README
deleted file mode 100644
index 3686530..0000000
--- a/import-layers/meta-virtualization/recipes-extended/xen/README
+++ /dev/null
@@ -1,24 +0,0 @@
-Xen
----
-
-For any issues with the xen recipes please make sure you CC cardoe@gentoo.org
-
-configuring the hypervisor
---------------------------
-
-Since 4.7.0 Xen supports using Kconfig to configure the hypervisor. Similarly
-to how the recipe for busybox works, you can provide a .config as a defconfig
-to override the default configuration of the hypervisor. The easiest way
-for you to take advantage of this is to create a .config for Xen and then
-copy it to your Yocto layer as 'defconfig' inside of
-'recipes-extended/xen/files/' and then create a bbappend adding
-'file://defconfig' to your SRC_URI.
-
-security patches
-----------------
-
-The base recipe does not include security fixes that the Xen community releases
-as XSAs (http://xenbits.xen.org/xsa/). The easiest way to include those is to
-drop patches in 'recipes-extened/xen/files' and create a bbappend adding those
-patches to SRC_URI and they will be applied. Alternatively, you can override
-the SRC_URI to a git repo you provide that contains the patches.
diff --git a/import-layers/meta-virtualization/recipes-extended/xen/files/0001-p2m-Always-check-to-see-if-removing-a-p2m-entry-actu.patch b/import-layers/meta-virtualization/recipes-extended/xen/files/0001-p2m-Always-check-to-see-if-removing-a-p2m-entry-actu.patch
deleted file mode 100644
index ad9524a..0000000
--- a/import-layers/meta-virtualization/recipes-extended/xen/files/0001-p2m-Always-check-to-see-if-removing-a-p2m-entry-actu.patch
+++ /dev/null
@@ -1,176 +0,0 @@
-From ad208b8b7e45fb2b7c572b86c61c26412609e82d Mon Sep 17 00:00:00 2001
-From: George Dunlap <george.dunlap@citrix.com>
-Date: Fri, 10 Nov 2017 16:53:54 +0000
-Subject: [PATCH 1/2] p2m: Always check to see if removing a p2m entry actually
- worked
-
-The PoD zero-check functions speculatively remove memory from the p2m,
-then check to see if it's completely zeroed, before putting it in the
-cache.
-
-Unfortunately, the p2m_set_entry() calls may fail if the underlying
-pagetable structure needs to change and the domain has exhausted its
-p2m memory pool: for instance, if we're removing a 2MiB region out of
-a 1GiB entry (in the p2m_pod_zero_check_superpage() case), or a 4k
-region out of a 2MiB or larger entry (in the p2m_pod_zero_check()
-case); and the return value is not checked.
-
-The underlying mfn will then be added into the PoD cache, and at some
-point mapped into another location in the p2m.  If the guest
-afterwards ballons out this memory, it will be freed to the hypervisor
-and potentially reused by another domain, in spite of the fact that
-the original domain still has writable mappings to it.
-
-There are several places where p2m_set_entry() shouldn't be able to
-fail, as it is guaranteed to write an entry of the same order that
-succeeded before.  Add a backstop of crashing the domain just in case,
-and an ASSERT_UNREACHABLE() to flag up the broken assumption on debug
-builds.
-
-While we're here, use PAGE_ORDER_2M rather than a magic constant.
-
-This is part of XSA-247.
-
-Reported-by: George Dunlap <george.dunlap.com>
-Signed-off-by: George Dunlap <george.dunlap@citrix.com>
-Reviewed-by: Jan Beulich <jbeulich@suse.com>
----
-v4:
-- Removed some training whitespace
-v3:
-- Reformat reset clause to be more compact
-- Make sure to set map[i] = NULL when unmapping in case we need to bail
-v2:
-- Crash a domain if a p2m_set_entry we think cannot fail fails anyway.
----
- xen/arch/x86/mm/p2m-pod.c | 77 +++++++++++++++++++++++++++++++++++++----------
- 1 file changed, 61 insertions(+), 16 deletions(-)
-
-diff --git a/xen/arch/x86/mm/p2m-pod.c b/xen/arch/x86/mm/p2m-pod.c
-index 730a48f928..f2ed751892 100644
---- a/xen/arch/x86/mm/p2m-pod.c
-+++ b/xen/arch/x86/mm/p2m-pod.c
-@@ -752,8 +752,10 @@ p2m_pod_zero_check_superpage(struct p2m_domain *p2m, unsigned long gfn)
-     }
- 
-     /* Try to remove the page, restoring old mapping if it fails. */
--    p2m_set_entry(p2m, gfn, INVALID_MFN, PAGE_ORDER_2M,
--                  p2m_populate_on_demand, p2m->default_access);
-+    if ( p2m_set_entry(p2m, gfn, INVALID_MFN, PAGE_ORDER_2M,
-+                       p2m_populate_on_demand, p2m->default_access) )
-+        goto out;
-+
-     p2m_tlb_flush_sync(p2m);
- 
-     /* Make none of the MFNs are used elsewhere... for example, mapped
-@@ -810,9 +812,18 @@ p2m_pod_zero_check_superpage(struct p2m_domain *p2m, unsigned long gfn)
-     ret = SUPERPAGE_PAGES;
- 
- out_reset:
--    if ( reset )
--        p2m_set_entry(p2m, gfn, mfn0, 9, type0, p2m->default_access);
--    
-+    /*
-+     * This p2m_set_entry() call shouldn't be able to fail, since the same order
-+     * on the same gfn succeeded above.  If that turns out to be false, crashing
-+     * the domain should be the safest way of making sure we don't leak memory.
-+     */
-+    if ( reset && p2m_set_entry(p2m, gfn, mfn0, PAGE_ORDER_2M,
-+                                type0, p2m->default_access) )
-+    {
-+        ASSERT_UNREACHABLE();
-+        domain_crash(d);
-+    }
-+
- out:
-     gfn_unlock(p2m, gfn, SUPERPAGE_ORDER);
-     return ret;
-@@ -869,19 +880,30 @@ p2m_pod_zero_check(struct p2m_domain *p2m, unsigned long *gfns, int count)
-         }
- 
-         /* Try to remove the page, restoring old mapping if it fails. */
--        p2m_set_entry(p2m, gfns[i], INVALID_MFN, PAGE_ORDER_4K,
--                      p2m_populate_on_demand, p2m->default_access);
-+        if ( p2m_set_entry(p2m, gfns[i], INVALID_MFN, PAGE_ORDER_4K,
-+                           p2m_populate_on_demand, p2m->default_access) )
-+            goto skip;
- 
-         /* See if the page was successfully unmapped.  (Allow one refcount
-          * for being allocated to a domain.) */
-         if ( (mfn_to_page(mfns[i])->count_info & PGC_count_mask) > 1 )
-         {
-+            /*
-+             * If the previous p2m_set_entry call succeeded, this one shouldn't
-+             * be able to fail.  If it does, crashing the domain should be safe.
-+             */
-+            if ( p2m_set_entry(p2m, gfns[i], mfns[i], PAGE_ORDER_4K,
-+                               types[i], p2m->default_access) )
-+            {
-+                ASSERT_UNREACHABLE();
-+                domain_crash(d);
-+                goto out_unmap;
-+            }
-+
-+        skip:
-             unmap_domain_page(map[i]);
-             map[i] = NULL;
- 
--            p2m_set_entry(p2m, gfns[i], mfns[i], PAGE_ORDER_4K,
--                types[i], p2m->default_access);
--
-             continue;
-         }
-     }
-@@ -900,12 +922,25 @@ p2m_pod_zero_check(struct p2m_domain *p2m, unsigned long *gfns, int count)
- 
-         unmap_domain_page(map[i]);
- 
--        /* See comment in p2m_pod_zero_check_superpage() re gnttab
--         * check timing.  */
--        if ( j < PAGE_SIZE/sizeof(*map[i]) )
-+        map[i] = NULL;
-+
-+        /*
-+         * See comment in p2m_pod_zero_check_superpage() re gnttab
-+         * check timing.
-+         */
-+        if ( j < (PAGE_SIZE / sizeof(*map[i])) )
-         {
--            p2m_set_entry(p2m, gfns[i], mfns[i], PAGE_ORDER_4K,
--                types[i], p2m->default_access);
-+            /*
-+             * If the previous p2m_set_entry call succeeded, this one shouldn't
-+             * be able to fail.  If it does, crashing the domain should be safe.
-+             */
-+            if ( p2m_set_entry(p2m, gfns[i], mfns[i], PAGE_ORDER_4K,
-+                               types[i], p2m->default_access) )
-+            {
-+                ASSERT_UNREACHABLE();
-+                domain_crash(d);
-+                goto out_unmap;
-+            }
-         }
-         else
-         {
-@@ -929,7 +964,17 @@ p2m_pod_zero_check(struct p2m_domain *p2m, unsigned long *gfns, int count)
-             p2m->pod.entry_count++;
-         }
-     }
--    
-+
-+    return;
-+
-+out_unmap:
-+    /*
-+     * Something went wrong, probably crashing the domain.  Unmap
-+     * everything and return.
-+     */
-+    for ( i = 0; i < count; i++ )
-+        if ( map[i] )
-+            unmap_domain_page(map[i]);
- }
- 
- #define POD_SWEEP_LIMIT 1024
--- 
-2.15.0
-
diff --git a/import-layers/meta-virtualization/recipes-extended/xen/files/0002-p2m-Check-return-value-of-p2m_set_entry-when-decreas.patch b/import-layers/meta-virtualization/recipes-extended/xen/files/0002-p2m-Check-return-value-of-p2m_set_entry-when-decreas.patch
deleted file mode 100644
index 8c850bd..0000000
--- a/import-layers/meta-virtualization/recipes-extended/xen/files/0002-p2m-Check-return-value-of-p2m_set_entry-when-decreas.patch
+++ /dev/null
@@ -1,109 +0,0 @@
-From d4bc7833707351a5341a6bdf04c752a028d9560d Mon Sep 17 00:00:00 2001
-From: George Dunlap <george.dunlap@citrix.com>
-Date: Fri, 10 Nov 2017 16:53:55 +0000
-Subject: [PATCH 2/2] p2m: Check return value of p2m_set_entry() when
- decreasing reservation
-
-If the entire range specified to p2m_pod_decrease_reservation() is marked
-populate-on-demand, then it will make a single p2m_set_entry() call,
-reducing its PoD entry count.
-
-Unfortunately, in the right circumstances, this p2m_set_entry() call
-may fail.  It that case, repeated calls to decrease_reservation() may
-cause p2m->pod.entry_count to fall below zero, potentially tripping
-over BUG_ON()s to the contrary.
-
-Instead, check to see if the entry succeeded, and return false if not.
-The caller will then call guest_remove_page() on the gfns, which will
-return -EINVAL upon finding no valid memory there to return.
-
-Unfortunately if the order > 0, the entry may have partially changed.
-A domain_crash() is probably the safest thing in that case.
-
-Other p2m_set_entry() calls in the same function should be fine,
-because they are writing the entry at its current order.  Nonetheless,
-check the return value and crash if our assumption turns otu to be
-wrong.
-
-This is part of XSA-247.
-
-Reported-by: George Dunlap <george.dunlap.com>
-Signed-off-by: George Dunlap <george.dunlap@citrix.com>
-Reviewed-by: Jan Beulich <jbeulich@suse.com>
----
-v2: Crash the domain if we're not sure it's safe (or if we think it
-can't happen)
----
- xen/arch/x86/mm/p2m-pod.c | 42 +++++++++++++++++++++++++++++++++---------
- 1 file changed, 33 insertions(+), 9 deletions(-)
-
-diff --git a/xen/arch/x86/mm/p2m-pod.c b/xen/arch/x86/mm/p2m-pod.c
-index f2ed751892..473d6a6dbf 100644
---- a/xen/arch/x86/mm/p2m-pod.c
-+++ b/xen/arch/x86/mm/p2m-pod.c
-@@ -555,11 +555,23 @@ p2m_pod_decrease_reservation(struct domain *d,
- 
-     if ( !nonpod )
-     {
--        /* All PoD: Mark the whole region invalid and tell caller
--         * we're done. */
--        p2m_set_entry(p2m, gpfn, INVALID_MFN, order, p2m_invalid,
--                      p2m->default_access);
--        p2m->pod.entry_count-=(1<<order);
-+        /*
-+         * All PoD: Mark the whole region invalid and tell caller
-+         * we're done.
-+         */
-+        if ( p2m_set_entry(p2m, gpfn, INVALID_MFN, order, p2m_invalid,
-+                           p2m->default_access) )
-+        {
-+            /*
-+             * If this fails, we can't tell how much of the range was changed.
-+             * Best to crash the domain unless we're sure a partial change is
-+             * impossible.
-+             */
-+            if ( order != 0 )
-+                domain_crash(d);
-+            goto out_unlock;
-+        }
-+        p2m->pod.entry_count -= 1UL << order;
-         BUG_ON(p2m->pod.entry_count < 0);
-         ret = 1;
-         goto out_entry_check;
-@@ -600,8 +612,14 @@ p2m_pod_decrease_reservation(struct domain *d,
-         n = 1UL << cur_order;
-         if ( t == p2m_populate_on_demand )
-         {
--            p2m_set_entry(p2m, gpfn + i, INVALID_MFN, cur_order,
--                          p2m_invalid, p2m->default_access);
-+            /* This shouldn't be able to fail */
-+            if ( p2m_set_entry(p2m, gpfn + i, INVALID_MFN, cur_order,
-+                               p2m_invalid, p2m->default_access) )
-+            {
-+                ASSERT_UNREACHABLE();
-+                domain_crash(d);
-+                goto out_unlock;
-+            }
-             p2m->pod.entry_count -= n;
-             BUG_ON(p2m->pod.entry_count < 0);
-             pod -= n;
-@@ -622,8 +640,14 @@ p2m_pod_decrease_reservation(struct domain *d,
- 
-             page = mfn_to_page(mfn);
- 
--            p2m_set_entry(p2m, gpfn + i, INVALID_MFN, cur_order,
--                          p2m_invalid, p2m->default_access);
-+            /* This shouldn't be able to fail */
-+            if ( p2m_set_entry(p2m, gpfn + i, INVALID_MFN, cur_order,
-+                               p2m_invalid, p2m->default_access) )
-+            {
-+                ASSERT_UNREACHABLE();
-+                domain_crash(d);
-+                goto out_unlock;
-+            }
-             p2m_tlb_flush_sync(p2m);
-             for ( j = 0; j < n; ++j )
-                 set_gpfn_from_mfn(mfn_x(mfn), INVALID_M2P_ENTRY);
--- 
-2.15.0
-
diff --git a/import-layers/meta-virtualization/recipes-extended/xen/files/lwip.dhcp_create_request-hwaddr_len.patch b/import-layers/meta-virtualization/recipes-extended/xen/files/lwip.dhcp_create_request-hwaddr_len.patch
deleted file mode 100644
index 4bbf21a..0000000
--- a/import-layers/meta-virtualization/recipes-extended/xen/files/lwip.dhcp_create_request-hwaddr_len.patch
+++ /dev/null
@@ -1,13 +0,0 @@
-Index: src/core/dhcp.c
-===================================================================
---- a/src/core/dhcp.c
-+++ b/src/core/dhcp.c
-@@ -1356,7 +1358,7 @@ dhcp_create_request(struct netif *netif)
-   dhcp->msg_out->giaddr.addr = 0;
-   for (i = 0; i < DHCP_CHADDR_LEN; i++) {
-     /* copy netif hardware address, pad with zeroes */
--    dhcp->msg_out->chaddr[i] = (i < netif->hwaddr_len) ? netif->hwaddr[i] : 0/* pad byte*/;
-+    dhcp->msg_out->chaddr[i] = (i < (netif->hwaddr_len > NETIF_MAX_HWADDR_LEN ? NETIF_MAX_HWADDR_LEN : netif->hwaddr_len)) ? netif->hwaddr[i] : 0/* pad byte*/;
-   }
-   for (i = 0; i < DHCP_SNAME_LEN; i++) {
-     dhcp->msg_out->sname[i] = 0;
diff --git a/import-layers/meta-virtualization/recipes-extended/xen/files/lwip.patch-cvs b/import-layers/meta-virtualization/recipes-extended/xen/files/lwip.patch-cvs
deleted file mode 100644
index b271877..0000000
--- a/import-layers/meta-virtualization/recipes-extended/xen/files/lwip.patch-cvs
+++ /dev/null
@@ -1,2398 +0,0 @@
-? .ChangeLog.swp
-? ChangeLog
-Index: CHANGELOG
-===================================================================
-RCS file: /sources/lwip/lwip/CHANGELOG,v
-retrieving revision 1.300
-retrieving revision 1.318
-diff -u -p -r1.300 -r1.318
---- a/CHANGELOG	23 Mar 2008 13:49:39 -0000	1.300
-+++ b/CHANGELOG	14 Jul 2008 20:12:36 -0000	1.318
-@@ -19,9 +19,77 @@ HISTORY
-
-   ++ New features:
-
-+  2008-06-30 Simon Goldschmidt
-+  * mem.c, opt.h, stats.h: fixed bug #21433: Calling mem_free/pbuf_free from
-+    interrupt context isn't safe: LWIP_ALLOW_MEM_FREE_FROM_OTHER_CONTEXT allows
-+    mem_free to run between mem_malloc iterations. Added illegal counter for
-+    mem stats.
-+
-+  2008-06-27 Simon Goldschmidt
-+  * stats.h/.c, some other files: patch #6483: stats module improvement:
-+    Added defines to display each module's statistic individually, added stats
-+    defines for MEM, MEMP and SYS modules, removed (unused) rexmit counter.
-+
-+  2008-06-17 Simon Goldschmidt
-+  * err.h: patch #6459: Made err_t overridable to use a more efficient type
-+    (define LWIP_ERR_T in cc.h)
-+
-+  2008-06-17 Simon Goldschmidt
-+  * slipif.c: patch #6480: Added a configuration option for slipif for symmetry
-+    to loopif
-+
-+  2008-06-17 Simon Goldschmidt (patch by Luca Ceresoli)
-+  * netif.c, loopif.c, ip.c, netif.h, loopif.h, opt.h: Checked in slightly
-+    modified version of patch # 6370: Moved loopif code to netif.c so that
-+    loopback traffic is supported on all netifs (all local IPs).
-+    Added option to limit loopback packets for each netifs.
-+
-
-   ++ Bugfixes:
-
-+  2008-08-14 Simon Goldschmidt
-+  * api_msg.c: fixed bug #23847: do_close_internal references freed memory (when
-+    tcp_close returns != ERR_OK)
-+
-+  2008-07-08 Frédéric Bernon
-+  * stats.h: Fix some build bugs introduced with patch #6483 (missing some parameters
-+    in macros, mainly if MEM_STATS=0 and MEMP_STATS=0).
-+
-+  2008-06-24 Jonathan Larmour
-+  * tcp_in.c: Fix for bug #23693 as suggested by Art R. Ensure cseg is unused
-+    if tcp_seg_copy fails.
-+
-+  2008-06-17 Simon Goldschmidt
-+  * inet_chksum.c: Checked in some ideas of patch #6460 (loop optimizations)
-+    and created defines for swapping bytes and folding u32 to u16.
-+
-+  2008-05-30 Kieran Mansley
-+  * tcp_in.c Remove redundant "if" statement, and use real rcv_wnd
-+    rather than rcv_ann_wnd when deciding if packets are in-window.
-+    Contributed by <arasmussen@consultant.datasys.swri.edu>
-+
-+  2008-05-30 Kieran Mansley
-+  * mem.h: Fix BUG#23254.  Change macro definition of mem_* to allow
-+    passing as function pointers when MEM_LIBC_MALLOC is defined.
-+
-+  2008-05-09 Jonathan Larmour
-+  * err.h, err.c, sockets.c: Fix bug #23119: Reorder timeout error code to
-+    stop it being treated as a fatal error.
-+
-+  2008-04-15 Simon Goldschmidt
-+  * dhcp.c: fixed bug #22804: dhcp_stop doesn't clear NETIF_FLAG_DHCP
-+    (flag now cleared)
-+
-+  2008-03-27 Simon Goldschmidt
-+  * mem.c, tcpip.c, tcpip.h, opt.h: fixed bug #21433 (Calling mem_free/pbuf_free
-+    from interrupt context isn't safe): set LWIP_USE_HEAP_FROM_INTERRUPT to 1
-+    in lwipopts.h or use pbuf_free_callback(p)/mem_free_callback(m) to free pbufs
-+    or heap memory from interrupt context
-+
-+  2008-03-26 Simon Goldschmidt
-+  * tcp_in.c, tcp.c: fixed bug #22249: division by zero could occur if a remote
-+    host sent a zero mss as TCP option.
-+
-
- (STABLE-1.3.0)
-
-Index: src/api/api_msg.c
-===================================================================
-RCS file: /sources/lwip/lwip/src/api/api_msg.c,v
-retrieving revision 1.102
-retrieving revision 1.104
-diff -u -p -r1.102 -r1.104
---- a/src/api/api_msg.c	21 Mar 2008 16:23:14 -0000	1.102
-+++ b/src/api/api_msg.c	15 Jul 2008 11:18:58 -0000	1.104
-@@ -598,11 +598,16 @@ do_close_internal(struct netconn *conn)
-   LWIP_ASSERT("pcb already closed", (conn->pcb.tcp != NULL));
-
-   /* Set back some callback pointers */
-+  tcp_arg(conn->pcb.tcp, NULL);
-   if (conn->pcb.tcp->state == LISTEN) {
--    tcp_arg(conn->pcb.tcp, NULL);
-     tcp_accept(conn->pcb.tcp, NULL);
-   } else {
-     tcp_recv(conn->pcb.tcp, NULL);
-+    tcp_accept(conn->pcb.tcp, NULL);
-+    /* some callbacks have to be reset if tcp_close is not successful */
-+    tcp_sent(conn->pcb.tcp, NULL);
-+    tcp_poll(conn->pcb.tcp, NULL, 4);
-+    tcp_err(conn->pcb.tcp, NULL);
-   }
-   /* Try to close the connection */
-   err = tcp_close(conn->pcb.tcp);
-@@ -610,11 +615,6 @@ do_close_internal(struct netconn *conn)
-     /* Closing succeeded */
-     conn->state = NETCONN_NONE;
-     /* Set back some callback pointers as conn is going away */
--    tcp_err(conn->pcb.tcp, NULL);
--    tcp_poll(conn->pcb.tcp, NULL, 4);
--    tcp_sent(conn->pcb.tcp, NULL);
--    tcp_recv(conn->pcb.tcp, NULL);
--    tcp_arg(conn->pcb.tcp, NULL);
-     conn->pcb.tcp = NULL;
-     conn->err = ERR_OK;
-     /* Trigger select() in socket layer. This send should something else so the
-@@ -623,6 +623,14 @@ do_close_internal(struct netconn *conn)
-     API_EVENT(conn, NETCONN_EVT_SENDPLUS, 0);
-     /* wake up the application task */
-     sys_sem_signal(conn->op_completed);
-+  } else {
-+    /* Closing failed, restore some of the callbacks */
-+    /* Closing of listen pcb will never fail! */
-+    LWIP_ASSERT("Closing a listen pcb may not fail!", (conn->pcb.tcp->state != LISTEN));
-+    tcp_sent(conn->pcb.tcp, sent_tcp);
-+    tcp_poll(conn->pcb.tcp, poll_tcp, 4);
-+    tcp_err(conn->pcb.tcp, err_tcp);
-+    tcp_arg(conn->pcb.tcp, conn);
-   }
-   /* If closing didn't succeed, we get called again either
-      from poll_tcp or from sent_tcp */
-Index: src/api/err.c
-===================================================================
-RCS file: /sources/lwip/lwip/src/api/err.c,v
-retrieving revision 1.11
-retrieving revision 1.12
-diff -u -p -r1.11 -r1.12
---- a/src/api/err.c	13 Dec 2007 23:06:50 -0000	1.11
-+++ b/src/api/err.c	9 May 2008 12:14:23 -0000	1.12
-@@ -44,17 +44,17 @@ static const char *err_strerr[] = {
-            "Ok.",                    /* ERR_OK          0  */
-            "Out of memory error.",   /* ERR_MEM        -1  */
-            "Buffer error.",          /* ERR_BUF        -2  */
--           "Routing problem.",       /* ERR_RTE        -3  */
--           "Connection aborted.",    /* ERR_ABRT       -4  */
--           "Connection reset.",      /* ERR_RST        -5  */
--           "Connection closed.",     /* ERR_CLSD       -6  */
--           "Not connected.",         /* ERR_CONN       -7  */
--           "Illegal value.",         /* ERR_VAL        -8  */
--           "Illegal argument.",      /* ERR_ARG        -9  */
--           "Address in use.",        /* ERR_USE        -10 */
--           "Low-level netif error.", /* ERR_IF         -11 */
--           "Already connected.",     /* ERR_ISCONN     -12 */
--           "Timeout.",               /* ERR_TIMEOUT    -13 */
-+           "Timeout.",               /* ERR_TIMEOUT    -3 */
-+           "Routing problem.",       /* ERR_RTE        -4  */
-+           "Connection aborted.",    /* ERR_ABRT       -5  */
-+           "Connection reset.",      /* ERR_RST        -6  */
-+           "Connection closed.",     /* ERR_CLSD       -7  */
-+           "Not connected.",         /* ERR_CONN       -8  */
-+           "Illegal value.",         /* ERR_VAL        -9  */
-+           "Illegal argument.",      /* ERR_ARG        -10 */
-+           "Address in use.",        /* ERR_USE        -11 */
-+           "Low-level netif error.", /* ERR_IF         -12 */
-+           "Already connected.",     /* ERR_ISCONN     -13 */
-            "Operation in progress."  /* ERR_INPROGRESS -14 */
- };
-
-Index: src/api/netdb.c
-===================================================================
-RCS file: /sources/lwip/lwip/src/api/netdb.c,v
-retrieving revision 1.4
-retrieving revision 1.5
-diff -u -p -r1.4 -r1.5
---- a/src/api/netdb.c	26 Jan 2008 16:11:39 -0000	1.4
-+++ b/src/api/netdb.c	16 Jul 2008 20:36:12 -0000	1.5
-@@ -326,7 +326,8 @@ lwip_getaddrinfo(const char *nodename, c
-   if (nodename != NULL) {
-     /* copy nodename to canonname if specified */
-     size_t namelen = strlen(nodename);
--    ai->ai_canonname = mem_malloc(namelen + 1);
-+    LWIP_ASSERT("namelen is too long", (namelen + 1) <= (mem_size_t)-1);
-+    ai->ai_canonname = mem_malloc((mem_size_t)(namelen + 1));
-     if (ai->ai_canonname == NULL) {
-       goto memerr;
-     }
-Index: src/api/sockets.c
-===================================================================
-RCS file: /sources/lwip/lwip/src/api/sockets.c,v
-retrieving revision 1.116
-retrieving revision 1.117
-diff -u -p -r1.116 -r1.117
---- a/src/api/sockets.c	13 Mar 2008 20:03:57 -0000	1.116
-+++ b/src/api/sockets.c	9 May 2008 12:14:24 -0000	1.117
-@@ -128,17 +128,17 @@ static const int err_to_errno_table[] =
-   0,             /* ERR_OK          0      No error, everything OK. */
-   ENOMEM,        /* ERR_MEM        -1      Out of memory error.     */
-   ENOBUFS,       /* ERR_BUF        -2      Buffer error.            */
--  EHOSTUNREACH,  /* ERR_RTE        -3      Routing problem.         */
--  ECONNABORTED,  /* ERR_ABRT       -4      Connection aborted.      */
--  ECONNRESET,    /* ERR_RST        -5      Connection reset.        */
--  ESHUTDOWN,     /* ERR_CLSD       -6      Connection closed.       */
--  ENOTCONN,      /* ERR_CONN       -7      Not connected.           */
--  EINVAL,        /* ERR_VAL        -8      Illegal value.           */
--  EIO,           /* ERR_ARG        -9      Illegal argument.        */
--  EADDRINUSE,    /* ERR_USE        -10     Address in use.          */
--  -1,            /* ERR_IF         -11     Low-level netif error    */
--  -1,            /* ERR_ISCONN     -12     Already connected.       */
--  ETIMEDOUT,     /* ERR_TIMEOUT    -13     Timeout                  */
-+  ETIMEDOUT,     /* ERR_TIMEOUT    -3      Timeout                  */
-+  EHOSTUNREACH,  /* ERR_RTE        -4      Routing problem.         */
-+  ECONNABORTED,  /* ERR_ABRT       -5      Connection aborted.      */
-+  ECONNRESET,    /* ERR_RST        -6      Connection reset.        */
-+  ESHUTDOWN,     /* ERR_CLSD       -7      Connection closed.       */
-+  ENOTCONN,      /* ERR_CONN       -8      Not connected.           */
-+  EINVAL,        /* ERR_VAL        -9      Illegal value.           */
-+  EIO,           /* ERR_ARG        -10     Illegal argument.        */
-+  EADDRINUSE,    /* ERR_USE        -11     Address in use.          */
-+  -1,            /* ERR_IF         -12     Low-level netif error    */
-+  -1,            /* ERR_ISCONN     -13     Already connected.       */
-   EINPROGRESS    /* ERR_INPROGRESS -14     Operation in progress    */
- };
-
-Index: src/api/tcpip.c
-===================================================================
-RCS file: /sources/lwip/lwip/src/api/tcpip.c,v
-retrieving revision 1.70
-retrieving revision 1.73
-diff -u -p -r1.70 -r1.73
---- a/src/api/tcpip.c	12 Jan 2008 11:52:22 -0000	1.70
-+++ b/src/api/tcpip.c	27 Jun 2008 20:34:51 -0000	1.73
-@@ -518,4 +518,42 @@ tcpip_init(void (* initfunc)(void *), vo
-   sys_thread_new(TCPIP_THREAD_NAME, tcpip_thread, NULL, TCPIP_THREAD_STACKSIZE, TCPIP_THREAD_PRIO);
- }
-
-+/**
-+ * Simple callback function used with tcpip_callback to free a pbuf
-+ * (pbuf_free has a wrong signature for tcpip_callback)
-+ *
-+ * @param p The pbuf (chain) to be dereferenced.
-+ */
-+static void
-+pbuf_free_int(void *p)
-+{
-+  struct pbuf *q = p;
-+  pbuf_free(q);
-+}
-+
-+/**
-+ * A simple wrapper function that allows you to free a pbuf from interrupt context.
-+ *
-+ * @param p The pbuf (chain) to be dereferenced.
-+ * @return ERR_OK if callback could be enqueued, an err_t if not
-+ */
-+err_t
-+pbuf_free_callback(struct pbuf *p)
-+{
-+  return tcpip_callback_with_block(pbuf_free_int, p, 0);
-+}
-+
-+/**
-+ * A simple wrapper function that allows you to free heap memory from
-+ * interrupt context.
-+ *
-+ * @param m the heap memory to free
-+ * @return ERR_OK if callback could be enqueued, an err_t if not
-+ */
-+err_t
-+mem_free_callback(void *m)
-+{
-+  return tcpip_callback_with_block(mem_free, m, 0);
-+}
-+
- #endif /* !NO_SYS */
-Index: src/core/dhcp.c
-===================================================================
-RCS file: /sources/lwip/lwip/src/core/dhcp.c,v
-retrieving revision 1.86
-retrieving revision 1.87
-diff -u -p -r1.86 -r1.87
---- a/src/core/dhcp.c	4 Mar 2008 14:25:58 -0000	1.86
-+++ b/src/core/dhcp.c	15 Apr 2008 17:24:55 -0000	1.87
-@@ -568,6 +568,8 @@ dhcp_start(struct netif *netif)
-   LWIP_ERROR("netif != NULL", (netif != NULL), return ERR_ARG;);
-   dhcp = netif->dhcp;
-   LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE | LWIP_DBG_STATE, ("dhcp_start(netif=%p) %c%c%"U16_F"\n", (void*)netif, netif->name[0], netif->name[1], (u16_t)netif->num));
-+  /* Remove the flag that says this netif is handled by DHCP,
-+     it is set when we succeeded starting. */
-   netif->flags &= ~NETIF_FLAG_DHCP;
-
-   /* no DHCP client attached yet? */
-@@ -609,6 +611,7 @@ dhcp_start(struct netif *netif)
-     dhcp_stop(netif);
-     return ERR_MEM;
-   }
-+  /* Set the flag that says this netif is handled by DHCP. */
-   netif->flags |= NETIF_FLAG_DHCP;
-   return result;
- }
-@@ -1063,6 +1066,8 @@ dhcp_stop(struct netif *netif)
- {
-   struct dhcp *dhcp = netif->dhcp;
-   LWIP_ERROR("dhcp_stop: netif != NULL", (netif != NULL), return;);
-+  /* Remove the flag that says this netif is handled by DHCP. */
-+  netif->flags &= ~NETIF_FLAG_DHCP;
-
-   LWIP_DEBUGF(DHCP_DEBUG | LWIP_DBG_TRACE | 3, ("dhcp_stop()\n"));
-   /* netif is DHCP configured? */
-Index: src/core/mem.c
-===================================================================
-RCS file: /sources/lwip/lwip/src/core/mem.c,v
-retrieving revision 1.59
-retrieving revision 1.62
-diff -u -p -r1.59 -r1.62
---- a/src/core/mem.c	4 Mar 2008 16:31:32 -0000	1.59
-+++ b/src/core/mem.c	30 Jun 2008 18:16:51 -0000	1.62
-@@ -177,9 +177,36 @@ static u8_t *ram;
- static struct mem *ram_end;
- /** pointer to the lowest free block, this is used for faster search */
- static struct mem *lfree;
-+
- /** concurrent access protection */
- static sys_sem_t mem_sem;
-
-+#if LWIP_ALLOW_MEM_FREE_FROM_OTHER_CONTEXT
-+
-+static volatile u8_t mem_free_count;
-+
-+/* Allow mem_free from other (e.g. interrupt) context */
-+#define LWIP_MEM_FREE_DECL_PROTECT()  SYS_ARCH_DECL_PROTECT(lev_free)
-+#define LWIP_MEM_FREE_PROTECT()       SYS_ARCH_PROTECT(lev_free)
-+#define LWIP_MEM_FREE_UNPROTECT()     SYS_ARCH_UNPROTECT(lev_free)
-+#define LWIP_MEM_ALLOC_DECL_PROTECT() SYS_ARCH_DECL_PROTECT(lev_alloc)
-+#define LWIP_MEM_ALLOC_PROTECT()      SYS_ARCH_PROTECT(lev_alloc)
-+#define LWIP_MEM_ALLOC_UNPROTECT()    SYS_ARCH_UNPROTECT(lev_alloc)
-+
-+#else /* LWIP_ALLOW_MEM_FREE_FROM_OTHER_CONTEXT */
-+
-+/* Protect the heap only by using a semaphore */
-+#define LWIP_MEM_FREE_DECL_PROTECT()
-+#define LWIP_MEM_FREE_PROTECT()    sys_arch_sem_wait(mem_sem, 0)
-+#define LWIP_MEM_FREE_UNPROTECT()  sys_sem_signal(mem_sem)
-+/* mem_malloc is protected using semaphore AND LWIP_MEM_ALLOC_PROTECT */
-+#define LWIP_MEM_ALLOC_DECL_PROTECT()
-+#define LWIP_MEM_ALLOC_PROTECT()
-+#define LWIP_MEM_ALLOC_UNPROTECT()
-+
-+#endif /* LWIP_ALLOW_MEM_FREE_FROM_OTHER_CONTEXT */
-+
-+
- /**
-  * "Plug holes" by combining adjacent empty struct mems.
-  * After this function is through, there should not exist
-@@ -255,9 +282,7 @@ mem_init(void)
-   /* initialize the lowest-free pointer to the start of the heap */
-   lfree = (struct mem *)ram;
-
--#if MEM_STATS
--  lwip_stats.mem.avail = MEM_SIZE_ALIGNED;
--#endif /* MEM_STATS */
-+  MEM_STATS_AVAIL(avail, MEM_SIZE_ALIGNED);
- }
-
- /**
-@@ -270,6 +295,7 @@ void
- mem_free(void *rmem)
- {
-   struct mem *mem;
-+  LWIP_MEM_FREE_DECL_PROTECT();
-
-   if (rmem == NULL) {
-     LWIP_DEBUGF(MEM_DEBUG | LWIP_DBG_TRACE | 2, ("mem_free(p == NULL) was called.\n"));
-@@ -277,20 +303,20 @@ mem_free(void *rmem)
-   }
-   LWIP_ASSERT("mem_free: sanity check alignment", (((mem_ptr_t)rmem) & (MEM_ALIGNMENT-1)) == 0);
-
--  /* protect the heap from concurrent access */
--  sys_arch_sem_wait(mem_sem, 0);
--
-   LWIP_ASSERT("mem_free: legal memory", (u8_t *)rmem >= (u8_t *)ram &&
-     (u8_t *)rmem < (u8_t *)ram_end);
-
-   if ((u8_t *)rmem < (u8_t *)ram || (u8_t *)rmem >= (u8_t *)ram_end) {
-+    SYS_ARCH_DECL_PROTECT(lev);
-     LWIP_DEBUGF(MEM_DEBUG | 3, ("mem_free: illegal memory\n"));
--#if MEM_STATS
--    ++lwip_stats.mem.err;
--#endif /* MEM_STATS */
--    sys_sem_signal(mem_sem);
-+    /* protect mem stats from concurrent access */
-+    SYS_ARCH_PROTECT(lev);
-+    MEM_STATS_INC(illegal);
-+    SYS_ARCH_UNPROTECT(lev);
-     return;
-   }
-+  /* protect the heap from concurrent access */
-+  LWIP_MEM_FREE_PROTECT();
-   /* Get the corresponding struct mem ... */
-   mem = (struct mem *)((u8_t *)rmem - SIZEOF_STRUCT_MEM);
-   /* ... which has to be in a used state ... */
-@@ -303,13 +329,14 @@ mem_free(void *rmem)
-     lfree = mem;
-   }
-
--#if MEM_STATS
--  lwip_stats.mem.used -= mem->next - ((u8_t *)mem - ram);
--#endif /* MEM_STATS */
-+  MEM_STATS_DEC_USED(used, mem->next - ((u8_t *)mem - ram));
-
-   /* finally, see if prev or next are free also */
-   plug_holes(mem);
--  sys_sem_signal(mem_sem);
-+#if LWIP_ALLOW_MEM_FREE_FROM_OTHER_CONTEXT
-+  mem_free_count = 1;
-+#endif /* LWIP_ALLOW_MEM_FREE_FROM_OTHER_CONTEXT */
-+  LWIP_MEM_FREE_UNPROTECT();
- }
-
- /**
-@@ -321,6 +348,8 @@ mem_free(void *rmem)
-  * @param newsize required size after shrinking (needs to be smaller than or
-  *                equal to the previous size)
-  * @return for compatibility reasons: is always == rmem, at the moment
-+ *         or NULL if newsize is > old size, in which case rmem is NOT touched
-+ *         or freed!
-  */
- void *
- mem_realloc(void *rmem, mem_size_t newsize)
-@@ -328,6 +357,8 @@ mem_realloc(void *rmem, mem_size_t newsi
-   mem_size_t size;
-   mem_size_t ptr, ptr2;
-   struct mem *mem, *mem2;
-+  /* use the FREE_PROTECT here: it protects with sem OR SYS_ARCH_PROTECT */
-+  LWIP_MEM_FREE_DECL_PROTECT();
-
-   /* Expand the size of the allocated memory region so that we can
-      adjust for alignment. */
-@@ -346,7 +377,12 @@ mem_realloc(void *rmem, mem_size_t newsi
-    (u8_t *)rmem < (u8_t *)ram_end);
-
-   if ((u8_t *)rmem < (u8_t *)ram || (u8_t *)rmem >= (u8_t *)ram_end) {
-+    SYS_ARCH_DECL_PROTECT(lev);
-     LWIP_DEBUGF(MEM_DEBUG | 3, ("mem_realloc: illegal memory\n"));
-+    /* protect mem stats from concurrent access */
-+    SYS_ARCH_PROTECT(lev);
-+    MEM_STATS_INC(illegal);
-+    SYS_ARCH_UNPROTECT(lev);
-     return rmem;
-   }
-   /* Get the corresponding struct mem ... */
-@@ -366,11 +402,9 @@ mem_realloc(void *rmem, mem_size_t newsi
-   }
-
-   /* protect the heap from concurrent access */
--  sys_arch_sem_wait(mem_sem, 0);
-+  LWIP_MEM_FREE_PROTECT();
-
--#if MEM_STATS
--  lwip_stats.mem.used -= (size - newsize);
--#endif /* MEM_STATS */
-+  MEM_STATS_DEC_USED(used, (size - newsize));
-
-   mem2 = (struct mem *)&ram[mem->next];
-   if(mem2->used == 0) {
-@@ -426,7 +460,10 @@ mem_realloc(void *rmem, mem_size_t newsi
-     -> don't do anyhting.
-     -> the remaining space stays unused since it is too small
-   } */
--  sys_sem_signal(mem_sem);
-+#if LWIP_ALLOW_MEM_FREE_FROM_OTHER_CONTEXT
-+  mem_free_count = 1;
-+#endif /* LWIP_ALLOW_MEM_FREE_FROM_OTHER_CONTEXT */
-+  LWIP_MEM_FREE_UNPROTECT();
-   return rmem;
- }
-
-@@ -444,6 +481,10 @@ mem_malloc(mem_size_t size)
- {
-   mem_size_t ptr, ptr2;
-   struct mem *mem, *mem2;
-+#if LWIP_ALLOW_MEM_FREE_FROM_OTHER_CONTEXT
-+  u8_t local_mem_free_count = 0;
-+#endif /* LWIP_ALLOW_MEM_FREE_FROM_OTHER_CONTEXT */
-+  LWIP_MEM_ALLOC_DECL_PROTECT();
-
-   if (size == 0) {
-     return NULL;
-@@ -464,88 +505,101 @@ mem_malloc(mem_size_t size)
-
-   /* protect the heap from concurrent access */
-   sys_arch_sem_wait(mem_sem, 0);
-+  LWIP_MEM_ALLOC_PROTECT();
-+#if LWIP_ALLOW_MEM_FREE_FROM_OTHER_CONTEXT
-+  /* run as long as a mem_free disturbed mem_malloc */
-+  do {
-+    local_mem_free_count = 0;
-+#endif /* LWIP_ALLOW_MEM_FREE_FROM_OTHER_CONTEXT */
-+
-+    /* Scan through the heap searching for a free block that is big enough,
-+     * beginning with the lowest free block.
-+     */
-+    for (ptr = (u8_t *)lfree - ram; ptr < MEM_SIZE_ALIGNED - size;
-+         ptr = ((struct mem *)&ram[ptr])->next) {
-+      mem = (struct mem *)&ram[ptr];
-+#if LWIP_ALLOW_MEM_FREE_FROM_OTHER_CONTEXT
-+      mem_free_count = 0;
-+      LWIP_MEM_ALLOC_UNPROTECT();
-+      /* allow mem_free to run */
-+      LWIP_MEM_ALLOC_PROTECT();
-+      if (mem_free_count != 0) {
-+        local_mem_free_count = mem_free_count;
-+      }
-+      mem_free_count = 0;
-+#endif /* LWIP_ALLOW_MEM_FREE_FROM_OTHER_CONTEXT */
-
--  /* Scan through the heap searching for a free block that is big enough,
--   * beginning with the lowest free block.
--   */
--  for (ptr = (u8_t *)lfree - ram; ptr < MEM_SIZE_ALIGNED - size;
--       ptr = ((struct mem *)&ram[ptr])->next) {
--    mem = (struct mem *)&ram[ptr];
--
--    if ((!mem->used) &&
--        (mem->next - (ptr + SIZEOF_STRUCT_MEM)) >= size) {
--      /* mem is not used and at least perfect fit is possible:
--       * mem->next - (ptr + SIZEOF_STRUCT_MEM) gives us the 'user data size' of mem */
--
--      if (mem->next - (ptr + SIZEOF_STRUCT_MEM) >= (size + SIZEOF_STRUCT_MEM + MIN_SIZE_ALIGNED)) {
--        /* (in addition to the above, we test if another struct mem (SIZEOF_STRUCT_MEM) containing
--         * at least MIN_SIZE_ALIGNED of data also fits in the 'user data space' of 'mem')
--         * -> split large block, create empty remainder,
--         * remainder must be large enough to contain MIN_SIZE_ALIGNED data: if
--         * mem->next - (ptr + (2*SIZEOF_STRUCT_MEM)) == size,
--         * struct mem would fit in but no data between mem2 and mem2->next
--         * @todo we could leave out MIN_SIZE_ALIGNED. We would create an empty
--         *       region that couldn't hold data, but when mem->next gets freed,
--         *       the 2 regions would be combined, resulting in more free memory
--         */
--        ptr2 = ptr + SIZEOF_STRUCT_MEM + size;
--        /* create mem2 struct */
--        mem2 = (struct mem *)&ram[ptr2];
--        mem2->used = 0;
--        mem2->next = mem->next;
--        mem2->prev = ptr;
--        /* and insert it between mem and mem->next */
--        mem->next = ptr2;
--        mem->used = 1;
--
--        if (mem2->next != MEM_SIZE_ALIGNED) {
--          ((struct mem *)&ram[mem2->next])->prev = ptr2;
--        }
--#if MEM_STATS
--        lwip_stats.mem.used += (size + SIZEOF_STRUCT_MEM);
--        if (lwip_stats.mem.max < lwip_stats.mem.used) {
--          lwip_stats.mem.max = lwip_stats.mem.used;
-+      if ((!mem->used) &&
-+          (mem->next - (ptr + SIZEOF_STRUCT_MEM)) >= size) {
-+        /* mem is not used and at least perfect fit is possible:
-+         * mem->next - (ptr + SIZEOF_STRUCT_MEM) gives us the 'user data size' of mem */
-+
-+        if (mem->next - (ptr + SIZEOF_STRUCT_MEM) >= (size + SIZEOF_STRUCT_MEM + MIN_SIZE_ALIGNED)) {
-+          /* (in addition to the above, we test if another struct mem (SIZEOF_STRUCT_MEM) containing
-+           * at least MIN_SIZE_ALIGNED of data also fits in the 'user data space' of 'mem')
-+           * -> split large block, create empty remainder,
-+           * remainder must be large enough to contain MIN_SIZE_ALIGNED data: if
-+           * mem->next - (ptr + (2*SIZEOF_STRUCT_MEM)) == size,
-+           * struct mem would fit in but no data between mem2 and mem2->next
-+           * @todo we could leave out MIN_SIZE_ALIGNED. We would create an empty
-+           *       region that couldn't hold data, but when mem->next gets freed,
-+           *       the 2 regions would be combined, resulting in more free memory
-+           */
-+          ptr2 = ptr + SIZEOF_STRUCT_MEM + size;
-+          /* create mem2 struct */
-+          mem2 = (struct mem *)&ram[ptr2];
-+          mem2->used = 0;
-+          mem2->next = mem->next;
-+          mem2->prev = ptr;
-+          /* and insert it between mem and mem->next */
-+          mem->next = ptr2;
-+          mem->used = 1;
-+
-+          if (mem2->next != MEM_SIZE_ALIGNED) {
-+            ((struct mem *)&ram[mem2->next])->prev = ptr2;
-+          }
-+          MEM_STATS_INC_USED(used, (size + SIZEOF_STRUCT_MEM));
-+        } else {
-+          /* (a mem2 struct does no fit into the user data space of mem and mem->next will always
-+           * be used at this point: if not we have 2 unused structs in a row, plug_holes should have
-+           * take care of this).
-+           * -> near fit or excact fit: do not split, no mem2 creation
-+           * also can't move mem->next directly behind mem, since mem->next
-+           * will always be used at this point!
-+           */
-+          mem->used = 1;
-+          MEM_STATS_INC_USED(used, mem->next - ((u8_t *)mem - ram));
-         }
--#endif /* MEM_STATS */
--      } else {
--        /* (a mem2 struct does no fit into the user data space of mem and mem->next will always
--         * be used at this point: if not we have 2 unused structs in a row, plug_holes should have
--         * take care of this).
--         * -> near fit or excact fit: do not split, no mem2 creation
--         * also can't move mem->next directly behind mem, since mem->next
--         * will always be used at this point!
--         */
--        mem->used = 1;
--#if MEM_STATS
--        lwip_stats.mem.used += mem->next - ((u8_t *)mem - ram);
--        if (lwip_stats.mem.max < lwip_stats.mem.used) {
--          lwip_stats.mem.max = lwip_stats.mem.used;
--        }
--#endif /* MEM_STATS */
--      }
-
--      if (mem == lfree) {
--        /* Find next free block after mem and update lowest free pointer */
--        while (lfree->used && lfree != ram_end) {
--          lfree = (struct mem *)&ram[lfree->next];
-+        if (mem == lfree) {
-+          /* Find next free block after mem and update lowest free pointer */
-+          while (lfree->used && lfree != ram_end) {
-+            LWIP_MEM_ALLOC_UNPROTECT();
-+            /* prevent high interrupt latency... */
-+            LWIP_MEM_ALLOC_PROTECT();
-+            lfree = (struct mem *)&ram[lfree->next];
-+          }
-+          LWIP_ASSERT("mem_malloc: !lfree->used", ((lfree == ram_end) || (!lfree->used)));
-         }
--        LWIP_ASSERT("mem_malloc: !lfree->used", ((lfree == ram_end) || (!lfree->used)));
--      }
--      sys_sem_signal(mem_sem);
--      LWIP_ASSERT("mem_malloc: allocated memory not above ram_end.",
--       (mem_ptr_t)mem + SIZEOF_STRUCT_MEM + size <= (mem_ptr_t)ram_end);
--      LWIP_ASSERT("mem_malloc: allocated memory properly aligned.",
--       (unsigned long)((u8_t *)mem + SIZEOF_STRUCT_MEM) % MEM_ALIGNMENT == 0);
--      LWIP_ASSERT("mem_malloc: sanity check alignment",
--        (((mem_ptr_t)mem) & (MEM_ALIGNMENT-1)) == 0);
-+        LWIP_MEM_ALLOC_UNPROTECT();
-+        sys_sem_signal(mem_sem);
-+        LWIP_ASSERT("mem_malloc: allocated memory not above ram_end.",
-+         (mem_ptr_t)mem + SIZEOF_STRUCT_MEM + size <= (mem_ptr_t)ram_end);
-+        LWIP_ASSERT("mem_malloc: allocated memory properly aligned.",
-+         (unsigned long)((u8_t *)mem + SIZEOF_STRUCT_MEM) % MEM_ALIGNMENT == 0);
-+        LWIP_ASSERT("mem_malloc: sanity check alignment",
-+          (((mem_ptr_t)mem) & (MEM_ALIGNMENT-1)) == 0);
-
--      return (u8_t *)mem + SIZEOF_STRUCT_MEM;
-+        return (u8_t *)mem + SIZEOF_STRUCT_MEM;
-+      }
-     }
--  }
-+#if LWIP_ALLOW_MEM_FREE_FROM_OTHER_CONTEXT
-+    /* if we got interrupted by a mem_free, try again */
-+  } while(local_mem_free_count != 0);
-+#endif /* LWIP_ALLOW_MEM_FREE_FROM_OTHER_CONTEXT */
-   LWIP_DEBUGF(MEM_DEBUG | 2, ("mem_malloc: could not allocate %"S16_F" bytes\n", (s16_t)size));
--#if MEM_STATS
--  ++lwip_stats.mem.err;
--#endif /* MEM_STATS */
-+  MEM_STATS_INC(err);
-+  LWIP_MEM_ALLOC_UNPROTECT();
-   sys_sem_signal(mem_sem);
-   return NULL;
- }
-Index: src/core/memp.c
-===================================================================
-RCS file: /sources/lwip/lwip/src/core/memp.c,v
-retrieving revision 1.55
-retrieving revision 1.56
-diff -u -p -r1.55 -r1.56
---- a/src/core/memp.c	25 Nov 2007 10:43:28 -0000	1.55
-+++ b/src/core/memp.c	27 Jun 2008 18:37:54 -0000	1.56
-@@ -252,13 +252,12 @@ memp_init(void)
-   struct memp *memp;
-   u16_t i, j;
-
--#if MEMP_STATS
-   for (i = 0; i < MEMP_MAX; ++i) {
--    lwip_stats.memp[i].used = lwip_stats.memp[i].max =
--      lwip_stats.memp[i].err = 0;
--    lwip_stats.memp[i].avail = memp_num[i];
-+    MEMP_STATS_AVAIL(used, i, 0);
-+    MEMP_STATS_AVAIL(max, i, 0);
-+    MEMP_STATS_AVAIL(err, i, 0);
-+    MEMP_STATS_AVAIL(avail, i, memp_num[i]);
-   }
--#endif /* MEMP_STATS */
-
-   memp = LWIP_MEM_ALIGN(memp_memory);
-   /* for every pool: */
-@@ -315,20 +314,13 @@ memp_malloc_fn(memp_t type, const char*
-     memp->file = file;
-     memp->line = line;
- #endif /* MEMP_OVERFLOW_CHECK */
--#if MEMP_STATS
--    ++lwip_stats.memp[type].used;
--    if (lwip_stats.memp[type].used > lwip_stats.memp[type].max) {
--      lwip_stats.memp[type].max = lwip_stats.memp[type].used;
--    }
--#endif /* MEMP_STATS */
-+    MEMP_STATS_INC_USED(used, type);
-     LWIP_ASSERT("memp_malloc: memp properly aligned",
-                 ((mem_ptr_t)memp % MEM_ALIGNMENT) == 0);
-     memp = (struct memp*)((u8_t*)memp + MEMP_SIZE);
-   } else {
-     LWIP_DEBUGF(MEMP_DEBUG | 2, ("memp_malloc: out of memory in pool %s\n", memp_desc[type]));
--#if MEMP_STATS
--    ++lwip_stats.memp[type].err;
--#endif /* MEMP_STATS */
-+    MEMP_STATS_INC(err, type);
-   }
-
-   SYS_ARCH_UNPROTECT(old_level);
-@@ -365,9 +357,7 @@ memp_free(memp_t type, void *mem)
- #endif /* MEMP_OVERFLOW_CHECK >= 2 */
- #endif /* MEMP_OVERFLOW_CHECK */
-
--#if MEMP_STATS
--  lwip_stats.memp[type].used--;
--#endif /* MEMP_STATS */
-+  MEMP_STATS_DEC(used, type);
-
-   memp->next = memp_tab[type];
-   memp_tab[type] = memp;
-Index: src/core/netif.c
-===================================================================
-RCS file: /sources/lwip/lwip/src/core/netif.c,v
-retrieving revision 1.65
-retrieving revision 1.68
-diff -u -p -r1.65 -r1.68
---- a/src/core/netif.c	9 Oct 2007 20:00:55 -0000	1.65
-+++ b/src/core/netif.c	19 Jun 2008 16:27:18 -0000	1.68
-@@ -45,6 +45,12 @@
- #include "lwip/snmp.h"
- #include "lwip/igmp.h"
- #include "netif/etharp.h"
-+#if ENABLE_LOOPBACK
-+#include "lwip/sys.h"
-+#if LWIP_NETIF_LOOPBACK_MULTITHREADING
-+#include "lwip/tcpip.h"
-+#endif /* LWIP_NETIF_LOOPBACK_MULTITHREADING */
-+#endif /* ENABLE_LOOPBACK */
-
- #if LWIP_NETIF_STATUS_CALLBACK
- #define NETIF_STATUS_CALLBACK(n) { if (n->status_callback) (n->status_callback)(n); }
-@@ -106,6 +112,10 @@ netif_add(struct netif *netif, struct ip
- #if LWIP_IGMP
-   netif->igmp_mac_filter = NULL;
- #endif /* LWIP_IGMP */
-+#if ENABLE_LOOPBACK
-+  netif->loop_first = NULL;
-+  netif->loop_last = NULL;
-+#endif /* ENABLE_LOOPBACK */
-
-   /* remember netif specific state information data */
-   netif->state = state;
-@@ -114,6 +124,9 @@ netif_add(struct netif *netif, struct ip
- #if LWIP_NETIF_HWADDRHINT
-   netif->addr_hint = NULL;
- #endif /* LWIP_NETIF_HWADDRHINT*/
-+#if ENABLE_LOOPBACK && LWIP_LOOPBACK_MAX_PBUFS
-+  netif->loop_cnt_current = 0;
-+#endif /* ENABLE_LOOPBACK && LWIP_LOOPBACK_MAX_PBUFS */
-
-   netif_set_addr(netif, ipaddr, netmask, gw);
-
-@@ -493,7 +506,158 @@ u8_t netif_is_link_up(struct netif *neti
-  */
- void netif_set_link_callback(struct netif *netif, void (* link_callback)(struct netif *netif ))
- {
--    if ( netif )
--        netif->link_callback = link_callback;
-+  if (netif) {
-+    netif->link_callback = link_callback;
-+  }
- }
- #endif /* LWIP_NETIF_LINK_CALLBACK */
-+
-+#if ENABLE_LOOPBACK
-+/**
-+ * Send an IP packet to be received on the same netif (loopif-like).
-+ * The pbuf is simply copied and handed back to netif->input.
-+ * In multithreaded mode, this is done directly since netif->input must put
-+ * the packet on a queue.
-+ * In callback mode, the packet is put on an internal queue and is fed to
-+ * netif->input by netif_poll().
-+ *
-+ * @param netif the lwip network interface structure
-+ * @param p the (IP) packet to 'send'
-+ * @param ipaddr the ip address to send the packet to (not used)
-+ * @return ERR_OK if the packet has been sent
-+ *         ERR_MEM if the pbuf used to copy the packet couldn't be allocated
-+ */
-+err_t
-+netif_loop_output(struct netif *netif, struct pbuf *p,
-+       struct ip_addr *ipaddr)
-+{
-+  struct pbuf *r;
-+  err_t err;
-+  struct pbuf *last;
-+#if LWIP_LOOPBACK_MAX_PBUFS
-+  u8_t clen = 0;
-+#endif /* LWIP_LOOPBACK_MAX_PBUFS */
-+  SYS_ARCH_DECL_PROTECT(lev);
-+  LWIP_UNUSED_ARG(ipaddr);
-+
-+  /* Allocate a new pbuf */
-+  r = pbuf_alloc(PBUF_LINK, p->tot_len, PBUF_RAM);
-+  if (r == NULL) {
-+    return ERR_MEM;
-+  }
-+#if LWIP_LOOPBACK_MAX_PBUFS
-+  clen = pbuf_clen(r);
-+  /* check for overflow or too many pbuf on queue */
-+  if(((netif->loop_cnt_current + clen) < netif->loop_cnt_current) ||
-+    ((netif->loop_cnt_current + clen) > LWIP_LOOPBACK_MAX_PBUFS)) {
-+      pbuf_free(r);
-+      r = NULL;
-+      return ERR_MEM;
-+  }
-+  netif->loop_cnt_current += clen;
-+#endif /* LWIP_LOOPBACK_MAX_PBUFS */
-+
-+  /* Copy the whole pbuf queue p into the single pbuf r */
-+  if ((err = pbuf_copy(r, p)) != ERR_OK) {
-+    pbuf_free(r);
-+    r = NULL;
-+    return err;
-+  }
-+
-+  /* Put the packet on a linked list which gets emptied through calling
-+     netif_poll(). */
-+
-+  /* let last point to the last pbuf in chain r */
-+  for (last = r; last->next != NULL; last = last->next);
-+
-+  SYS_ARCH_PROTECT(lev);
-+  if(netif->loop_first != NULL) {
-+    LWIP_ASSERT("if first != NULL, last must also be != NULL", netif->loop_last != NULL);
-+    netif->loop_last->next = r;
-+    netif->loop_last = last;
-+  } else {
-+    netif->loop_first = r;
-+    netif->loop_last = last;
-+  }
-+  SYS_ARCH_UNPROTECT(lev);
-+
-+#if LWIP_NETIF_LOOPBACK_MULTITHREADING
-+  /* For multithreading environment, schedule a call to netif_poll */
-+  tcpip_callback(netif_poll, netif);
-+#endif /* LWIP_NETIF_LOOPBACK_MULTITHREADING */
-+
-+  return ERR_OK;
-+}
-+
-+/**
-+ * Call netif_poll() in the main loop of your application. This is to prevent
-+ * reentering non-reentrant functions like tcp_input(). Packets passed to
-+ * netif_loop_output() are put on a list that is passed to netif->input() by
-+ * netif_poll().
-+ */
-+void
-+netif_poll(struct netif *netif)
-+{
-+  struct pbuf *in;
-+  SYS_ARCH_DECL_PROTECT(lev);
-+
-+  do {
-+    /* Get a packet from the list. With SYS_LIGHTWEIGHT_PROT=1, this is protected */
-+    SYS_ARCH_PROTECT(lev);
-+    in = netif->loop_first;
-+    if(in != NULL) {
-+      struct pbuf *in_end = in;
-+#if LWIP_LOOPBACK_MAX_PBUFS
-+      u8_t clen = pbuf_clen(in);
-+      /* adjust the number of pbufs on queue */
-+      LWIP_ASSERT("netif->loop_cnt_current underflow",
-+        ((netif->loop_cnt_current - clen) < netif->loop_cnt_current));
-+      netif->loop_cnt_current -= clen;
-+#endif /* LWIP_LOOPBACK_MAX_PBUFS */
-+      while(in_end->len != in_end->tot_len) {
-+        LWIP_ASSERT("bogus pbuf: len != tot_len but next == NULL!", in_end->next != NULL);
-+        in_end = in_end->next;
-+      }
-+      /* 'in_end' now points to the last pbuf from 'in' */
-+      if(in_end == netif->loop_last) {
-+        /* this was the last pbuf in the list */
-+        netif->loop_first = netif->loop_last = NULL;
-+      } else {
-+        /* pop the pbuf off the list */
-+        netif->loop_first = in_end->next;
-+        LWIP_ASSERT("should not be null since first != last!", netif->loop_first != NULL);
-+      }
-+      /* De-queue the pbuf from its successors on the 'loop_' list. */
-+      in_end->next = NULL;
-+    }
-+    SYS_ARCH_UNPROTECT(lev);
-+
-+    if(in != NULL) {
-+      /* loopback packets are always IP packets! */
-+      if(ip_input(in, netif) != ERR_OK) {
-+        pbuf_free(in);
-+      }
-+      /* Don't reference the packet any more! */
-+      in = NULL;
-+    }
-+  /* go on while there is a packet on the list */
-+  } while(netif->loop_first != NULL);
-+}
-+
-+#if !LWIP_NETIF_LOOPBACK_MULTITHREADING
-+/**
-+ * Calls netif_poll() for every netif on the netif_list.
-+ */
-+void
-+netif_poll_all(void)
-+{
-+  struct netif *netif = netif_list;
-+  /* loop through netifs */
-+  while (netif != NULL) {
-+    netif_poll(netif);
-+    /* proceed to next network interface */
-+    netif = netif->next;
-+  }
-+}
-+#endif /* !LWIP_NETIF_LOOPBACK_MULTITHREADING */
-+#endif /* ENABLE_LOOPBACK */
-Index: src/core/pbuf.c
-===================================================================
-RCS file: /sources/lwip/lwip/src/core/pbuf.c,v
-retrieving revision 1.127
-retrieving revision 1.128
-diff -u -p -r1.127 -r1.128
---- a/src/core/pbuf.c	4 Mar 2008 16:37:46 -0000	1.127
-+++ b/src/core/pbuf.c	1 Apr 2008 19:05:40 -0000	1.128
-@@ -667,8 +667,8 @@ pbuf_dechain(struct pbuf *p)
-  *
-  * @note Only one packet is copied, no packet queue!
-  *
-- * @param p_to pbuf source of the copy
-- * @param p_from pbuf destination of the copy
-+ * @param p_to pbuf destination of the copy
-+ * @param p_from pbuf source of the copy
-  *
-  * @return ERR_OK if pbuf was copied
-  *         ERR_ARG if one of the pbufs is NULL or p_to is not big
-Index: src/core/stats.c
-===================================================================
-RCS file: /sources/lwip/lwip/src/core/stats.c,v
-retrieving revision 1.27
-retrieving revision 1.28
-diff -u -p -r1.27 -r1.28
---- a/src/core/stats.c	4 Mar 2008 16:31:32 -0000	1.27
-+++ b/src/core/stats.c	27 Jun 2008 18:37:54 -0000	1.28
-@@ -54,7 +54,6 @@ stats_display_proto(struct stats_proto *
- {
-   LWIP_PLATFORM_DIAG(("\n%s\n\t", name));
-   LWIP_PLATFORM_DIAG(("xmit: %"STAT_COUNTER_F"\n\t", proto->xmit));
--  LWIP_PLATFORM_DIAG(("rexmit: %"STAT_COUNTER_F"\n\t", proto->rexmit));
-   LWIP_PLATFORM_DIAG(("recv: %"STAT_COUNTER_F"\n\t", proto->recv));
-   LWIP_PLATFORM_DIAG(("fw: %"STAT_COUNTER_F"\n\t", proto->fw));
-   LWIP_PLATFORM_DIAG(("drop: %"STAT_COUNTER_F"\n\t", proto->drop));
-@@ -68,6 +67,7 @@ stats_display_proto(struct stats_proto *
-   LWIP_PLATFORM_DIAG(("cachehit: %"STAT_COUNTER_F"\n", proto->cachehit));
- }
-
-+#if IGMP_STATS
- void
- stats_display_igmp(struct stats_igmp *igmp)
- {
-@@ -82,7 +82,9 @@ stats_display_igmp(struct stats_igmp *ig
-   LWIP_PLATFORM_DIAG(("report_rxed: %"STAT_COUNTER_F"\n\t", igmp->report_rxed));
-   LWIP_PLATFORM_DIAG(("group_query_rxed: %"STAT_COUNTER_F"\n", igmp->group_query_rxed));
- }
-+#endif /* IGMP_STATS */
-
-+#if MEM_STATS || MEMP_STATS
- void
- stats_display_mem(struct stats_mem *mem, char *name)
- {
-@@ -93,48 +95,53 @@ stats_display_mem(struct stats_mem *mem,
-   LWIP_PLATFORM_DIAG(("err: %"U32_F"\n", (u32_t)mem->err));
- }
-
-+#if MEMP_STATS
- void
--stats_display(void)
-+stats_display_memp(struct stats_mem *mem, int index)
- {
--#if MEMP_STATS
--  s16_t i;
-   char * memp_names[] = {
- #define LWIP_MEMPOOL(name,num,size,desc) desc,
- #include "lwip/memp_std.h"
-   };
--#endif
--#if LINK_STATS
--  stats_display_proto(&lwip_stats.link, "LINK");
--#endif
--#if ETHARP_STATS
--  stats_display_proto(&lwip_stats.etharp, "ETHARP");
--#endif
--#if IPFRAG_STATS
--  stats_display_proto(&lwip_stats.ip_frag, "IP_FRAG");
--#endif
--#if IP_STATS
--  stats_display_proto(&lwip_stats.ip, "IP");
--#endif
--#if ICMP_STATS
--  stats_display_proto(&lwip_stats.icmp, "ICMP");
--#endif
--#if IGMP_STATS
--  stats_display_igmp(&lwip_stats.igmp);
--#endif
--#if UDP_STATS
--  stats_display_proto(&lwip_stats.udp, "UDP");
--#endif
--#if TCP_STATS
--  stats_display_proto(&lwip_stats.tcp, "TCP");
--#endif
--#if MEM_STATS
--  stats_display_mem(&lwip_stats.mem, "HEAP");
--#endif
--#if MEMP_STATS
-+  if(index < MEMP_MAX) {
-+    stats_display_mem(mem, memp_names[index]);
-+  }
-+}
-+#endif /* MEMP_STATS */
-+#endif /* MEM_STATS || MEMP_STATS */
-+
-+#if SYS_STATS
-+void
-+stats_display_sys(struct stats_sys *sys)
-+{
-+  LWIP_PLATFORM_DIAG(("\nSYS\n\t"));
-+  LWIP_PLATFORM_DIAG(("sem.used: %"U32_F"\n\t", (u32_t)sys->sem.used));
-+  LWIP_PLATFORM_DIAG(("sem.max:  %"U32_F"\n\t", (u32_t)sys->sem.max));
-+  LWIP_PLATFORM_DIAG(("sem.err:  %"U32_F"\n\t", (u32_t)sys->sem.err));
-+  LWIP_PLATFORM_DIAG(("mbox.used: %"U32_F"\n\t", (u32_t)sys->mbox.used));
-+  LWIP_PLATFORM_DIAG(("mbox.max:  %"U32_F"\n\t", (u32_t)sys->mbox.max));
-+  LWIP_PLATFORM_DIAG(("mbox.err:  %"U32_F"\n\t", (u32_t)sys->mbox.err));
-+}
-+#endif /* SYS_STATS */
-+
-+void
-+stats_display(void)
-+{
-+  s16_t i;
-+
-+  LINK_STATS_DISPLAY();
-+  ETHARP_STATS_DISPLAY();
-+  IPFRAG_STATS_DISPLAY();
-+  IP_STATS_DISPLAY();
-+  IGMP_STATS_DISPLAY();
-+  ICMP_STATS_DISPLAY();
-+  UDP_STATS_DISPLAY();
-+  TCP_STATS_DISPLAY();
-+  MEM_STATS_DISPLAY();
-   for (i = 0; i < MEMP_MAX; i++) {
--    stats_display_mem(&lwip_stats.memp[i], memp_names[i]);
-+    MEMP_STATS_DISPLAY(i);
-   }
--#endif
-+  SYS_STATS_DISPLAY();
- }
- #endif /* LWIP_STATS_DISPLAY */
-
-Index: src/core/sys.c
-===================================================================
-RCS file: /sources/lwip/lwip/src/core/sys.c,v
-retrieving revision 1.32
-retrieving revision 1.33
-diff -u -p -r1.32 -r1.33
---- a/src/core/sys.c	25 Nov 2007 13:57:05 -0000	1.32
-+++ b/src/core/sys.c	16 Jul 2008 20:36:12 -0000	1.33
-@@ -65,7 +65,7 @@ struct sswt_cb
- void
- sys_mbox_fetch(sys_mbox_t mbox, void **msg)
- {
--  u32_t time;
-+  u32_t time_needed;
-   struct sys_timeouts *timeouts;
-   struct sys_timeo *tmptimeout;
-   sys_timeout_handler h;
-@@ -76,18 +76,18 @@ sys_mbox_fetch(sys_mbox_t mbox, void **m
-
-   if (!timeouts || !timeouts->next) {
-     UNLOCK_TCPIP_CORE();
--    time = sys_arch_mbox_fetch(mbox, msg, 0);
-+    time_needed = sys_arch_mbox_fetch(mbox, msg, 0);
-     LOCK_TCPIP_CORE();
-   } else {
-     if (timeouts->next->time > 0) {
-       UNLOCK_TCPIP_CORE();
--      time = sys_arch_mbox_fetch(mbox, msg, timeouts->next->time);
-+      time_needed = sys_arch_mbox_fetch(mbox, msg, timeouts->next->time);
-       LOCK_TCPIP_CORE();
-     } else {
--      time = SYS_ARCH_TIMEOUT;
-+      time_needed = SYS_ARCH_TIMEOUT;
-     }
-
--    if (time == SYS_ARCH_TIMEOUT) {
-+    if (time_needed == SYS_ARCH_TIMEOUT) {
-       /* If time == SYS_ARCH_TIMEOUT, a timeout occured before a message
-          could be fetched. We should now call the timeout handler and
-          deallocate the memory allocated for the timeout. */
-@@ -107,8 +107,8 @@ sys_mbox_fetch(sys_mbox_t mbox, void **m
-       /* If time != SYS_ARCH_TIMEOUT, a message was received before the timeout
-          occured. The time variable is set to the number of
-          milliseconds we waited for the message. */
--      if (time < timeouts->next->time) {
--        timeouts->next->time -= time;
-+      if (time_needed < timeouts->next->time) {
-+        timeouts->next->time -= time_needed;
-       } else {
-         timeouts->next->time = 0;
-       }
-@@ -125,7 +125,7 @@ sys_mbox_fetch(sys_mbox_t mbox, void **m
- void
- sys_sem_wait(sys_sem_t sem)
- {
--  u32_t time;
-+  u32_t time_needed;
-   struct sys_timeouts *timeouts;
-   struct sys_timeo *tmptimeout;
-   sys_timeout_handler h;
-@@ -139,12 +139,12 @@ sys_sem_wait(sys_sem_t sem)
-     sys_arch_sem_wait(sem, 0);
-   } else {
-     if (timeouts->next->time > 0) {
--      time = sys_arch_sem_wait(sem, timeouts->next->time);
-+      time_needed = sys_arch_sem_wait(sem, timeouts->next->time);
-     } else {
--      time = SYS_ARCH_TIMEOUT;
-+      time_needed = SYS_ARCH_TIMEOUT;
-     }
-
--    if (time == SYS_ARCH_TIMEOUT) {
-+    if (time_needed == SYS_ARCH_TIMEOUT) {
-       /* If time == SYS_ARCH_TIMEOUT, a timeout occured before a message
-         could be fetched. We should now call the timeout handler and
-         deallocate the memory allocated for the timeout. */
-@@ -164,8 +164,8 @@ sys_sem_wait(sys_sem_t sem)
-       /* If time != SYS_ARCH_TIMEOUT, a message was received before the timeout
-          occured. The time variable is set to the number of
-          milliseconds we waited for the message. */
--      if (time < timeouts->next->time) {
--        timeouts->next->time -= time;
-+      if (time_needed < timeouts->next->time) {
-+        timeouts->next->time -= time_needed;
-       } else {
-         timeouts->next->time = 0;
-       }
-Index: src/core/tcp.c
-===================================================================
-RCS file: /sources/lwip/lwip/src/core/tcp.c,v
-retrieving revision 1.85
-retrieving revision 1.86
-diff -u -p -r1.85 -r1.86
---- a/src/core/tcp.c	22 Jan 2008 21:15:15 -0000	1.85
-+++ b/src/core/tcp.c	26 Mar 2008 11:57:13 -0000	1.86
-@@ -509,7 +509,8 @@ tcp_connect(struct tcp_pcb *pcb, struct
-   pcb->rcv_wnd = TCP_WND;
-   pcb->rcv_ann_wnd = TCP_WND;
-   pcb->snd_wnd = TCP_WND;
--  /* The send MSS is updated when an MSS option is received. */
-+  /* As initial send MSS, we use TCP_MSS but limit it to 536.
-+     The send MSS is updated when an MSS option is received. */
-   pcb->mss = (TCP_MSS > 536) ? 536 : TCP_MSS;
- #if TCP_CALCULATE_EFF_SEND_MSS
-   pcb->mss = tcp_eff_send_mss(pcb->mss, ipaddr);
-@@ -991,7 +992,8 @@ tcp_alloc(u8_t prio)
-     pcb->rcv_ann_wnd = TCP_WND;
-     pcb->tos = 0;
-     pcb->ttl = TCP_TTL;
--    /* The send MSS is updated when an MSS option is received. */
-+    /* As initial send MSS, we use TCP_MSS but limit it to 536.
-+       The send MSS is updated when an MSS option is received. */
-     pcb->mss = (TCP_MSS > 536) ? 536 : TCP_MSS;
-     pcb->rto = 3000 / TCP_SLOW_INTERVAL;
-     pcb->sa = 0;
-Index: src/core/tcp_in.c
-===================================================================
-RCS file: /sources/lwip/lwip/src/core/tcp_in.c,v
-retrieving revision 1.97
-retrieving revision 1.100
-diff -u -p -r1.97 -r1.100
---- a/src/core/tcp_in.c	22 Jan 2008 21:15:15 -0000	1.97
-+++ b/src/core/tcp_in.c	24 Jun 2008 15:46:39 -0000	1.100
-@@ -511,7 +511,7 @@ tcp_process(struct tcp_pcb *pcb)
-       }
-     } else {
-       if (TCP_SEQ_BETWEEN(seqno, pcb->rcv_nxt,
--                          pcb->rcv_nxt+pcb->rcv_ann_wnd)) {
-+                          pcb->rcv_nxt+pcb->rcv_wnd)) {
-         acceptable = 1;
-       }
-     }
-@@ -1038,7 +1038,7 @@ tcp_receive(struct tcp_pcb *pcb)
-        and below rcv_nxt + rcv_wnd) in order to be further
-        processed. */
-     if (TCP_SEQ_BETWEEN(seqno, pcb->rcv_nxt,
--                        pcb->rcv_nxt + pcb->rcv_ann_wnd - 1)){
-+                        pcb->rcv_nxt + pcb->rcv_wnd - 1)){
-       if (pcb->rcv_nxt == seqno) {
-         accepted_inseq = 1;
-         /* The incoming segment is the next in sequence. We check if
-@@ -1195,14 +1195,14 @@ tcp_receive(struct tcp_pcb *pcb)
-                   } else {
-                     pcb->ooseq = cseg;
-                   }
--                }
--                tcp_seg_free(next);
--                if (cseg->next != NULL) {
--                  next = cseg->next;
--                  if (TCP_SEQ_GT(seqno + cseg->len, next->tcphdr->seqno)) {
--                    /* We need to trim the incoming segment. */
--                    cseg->len = (u16_t)(next->tcphdr->seqno - seqno);
--                    pbuf_realloc(cseg->p, cseg->len);
-+                  tcp_seg_free(next);
-+                  if (cseg->next != NULL) {
-+                    next = cseg->next;
-+                    if (TCP_SEQ_GT(seqno + cseg->len, next->tcphdr->seqno)) {
-+                      /* We need to trim the incoming segment. */
-+                      cseg->len = (u16_t)(next->tcphdr->seqno - seqno);
-+                      pbuf_realloc(cseg->p, cseg->len);
-+                    }
-                   }
-                 }
-                 break;
-@@ -1282,10 +1282,7 @@ tcp_receive(struct tcp_pcb *pcb)
-
-       }
-     } else {
--      if(!TCP_SEQ_BETWEEN(seqno, pcb->rcv_nxt,
--                          pcb->rcv_nxt + pcb->rcv_ann_wnd-1)){
--        tcp_ack_now(pcb);
--      }
-+      tcp_ack_now(pcb);
-     }
-   } else {
-     /* Segments with length 0 is taken care of here. Segments that
-@@ -1331,7 +1328,8 @@ tcp_parseopt(struct tcp_pcb *pcb)
-         opts[c + 1] == 0x04) {
-         /* An MSS option with the right option length. */
-         mss = (opts[c + 2] << 8) | opts[c + 3];
--        pcb->mss = mss > TCP_MSS? TCP_MSS: mss;
-+        /* Limit the mss to the configured TCP_MSS and prevent division by zero */
-+        pcb->mss = ((mss > TCP_MSS) || (mss == 0)) ? TCP_MSS : mss;
-
-         /* And we are done processing options. */
-         break;
-Index: src/core/ipv4/autoip.c
-===================================================================
-RCS file: /sources/lwip/lwip/src/core/ipv4/autoip.c,v
-retrieving revision 1.16
-retrieving revision 1.17
-diff -u -p -r1.16 -r1.17
---- a/src/core/ipv4/autoip.c	26 Jan 2008 16:11:40 -0000	1.16
-+++ b/src/core/ipv4/autoip.c	17 Jun 2008 20:16:23 -0000	1.17
-@@ -395,8 +395,8 @@ autoip_arp_reply(struct netif *netif, st
-     /* Copy struct ip_addr2 to aligned ip_addr, to support compilers without
-      * structure packing (not using structure copy which breaks strict-aliasing rules).
-      */
--    MEMCPY(&sipaddr, &hdr->sipaddr, sizeof(sipaddr));
--    MEMCPY(&dipaddr, &hdr->dipaddr, sizeof(dipaddr));
-+    SMEMCPY(&sipaddr, &hdr->sipaddr, sizeof(sipaddr));
-+    SMEMCPY(&dipaddr, &hdr->dipaddr, sizeof(dipaddr));
-
-     if ((netif->autoip->state == AUTOIP_STATE_PROBING) ||
-         ((netif->autoip->state == AUTOIP_STATE_ANNOUNCING) &&
-Index: src/core/ipv4/inet_chksum.c
-===================================================================
-RCS file: /sources/lwip/lwip/src/core/ipv4/inet_chksum.c,v
-retrieving revision 1.4
-retrieving revision 1.5
-diff -u -p -r1.4 -r1.5
---- a/src/core/ipv4/inet_chksum.c	10 Mar 2008 16:12:31 -0000	1.4
-+++ b/src/core/ipv4/inet_chksum.c	17 Jun 2008 20:06:25 -0000	1.5
-@@ -41,8 +41,6 @@
- #include "lwip/inet_chksum.h"
- #include "lwip/inet.h"
-
--#include <string.h>
--
- /* These are some reference implementations of the checksum algorithm, with the
-  * aim of being simple, correct and fully portable. Checksumming is the
-  * first thing you would want to optimize for your platform. If you create
-@@ -65,6 +63,11 @@
- # define LWIP_CHKSUM_ALGORITHM 0
- #endif
-
-+/** Like the name says... */
-+#define SWAP_BYTES_IN_WORD(w) ((w & 0xff) << 8) | ((w & 0xff00) >> 8)
-+/** Split an u32_t in two u16_ts and add them up */
-+#define FOLD_U32T(u)          ((u >> 16) + (u & 0x0000ffffUL))
-+
- #if (LWIP_CHKSUM_ALGORITHM == 1) /* Version #1 */
- /**
-  * lwip checksum
-@@ -86,8 +89,7 @@ lwip_standard_chksum(void *dataptr, u16_
-   acc = 0;
-   /* dataptr may be at odd or even addresses */
-   octetptr = (u8_t*)dataptr;
--  while (len > 1)
--  {
-+  while (len > 1) {
-     /* declare first octet as most significant
-        thus assume network order, ignoring host order */
-     src = (*octetptr) << 8;
-@@ -98,8 +100,7 @@ lwip_standard_chksum(void *dataptr, u16_
-     acc += src;
-     len -= 2;
-   }
--  if (len > 0)
--  {
-+  if (len > 0) {
-     /* accumulate remaining octet */
-     src = (*octetptr) << 8;
-     acc += src;
-@@ -154,19 +155,22 @@ lwip_standard_chksum(void *dataptr, int
-   }
-
-   /* Consume left-over byte, if any */
--  if (len > 0)
-+  if (len > 0) {
-     ((u8_t *)&t)[0] = *(u8_t *)ps;;
-+  }
-
-   /* Add end bytes */
-   sum += t;
-
--  /*  Fold 32-bit sum to 16 bits */
--  while ((sum >> 16) != 0)
--    sum = (sum & 0xffff) + (sum >> 16);
-+  /* Fold 32-bit sum to 16 bits
-+     calling this twice is propably faster than if statements... */
-+  sum = FOLD_U32T(sum);
-+  sum = FOLD_U32T(sum);
-
-   /* Swap if alignment was odd */
--  if (odd)
--    sum = ((sum & 0xff) << 8) | ((sum & 0xff00) >> 8);
-+  if (odd) {
-+    sum = SWAP_BYTES_IN_WORD(sum);
-+  }
-
-   return sum;
- }
-@@ -211,18 +215,20 @@ lwip_standard_chksum(void *dataptr, int
-
-   while (len > 7)  {
-     tmp = sum + *pl++;          /* ping */
--    if (tmp < sum)
-+    if (tmp < sum) {
-       tmp++;                    /* add back carry */
-+    }
-
-     sum = tmp + *pl++;          /* pong */
--    if (sum < tmp)
-+    if (sum < tmp) {
-       sum++;                    /* add back carry */
-+    }
-
-     len -= 8;
-   }
-
-   /* make room in upper bits */
--  sum = (sum >> 16) + (sum & 0xffff);
-+  sum = FOLD_U32T(sum);
-
-   ps = (u16_t *)pl;
-
-@@ -233,16 +239,20 @@ lwip_standard_chksum(void *dataptr, int
-   }
-
-   /* dangling tail byte remaining? */
--  if (len > 0)                  /* include odd byte */
-+  if (len > 0) {                /* include odd byte */
-     ((u8_t *)&t)[0] = *(u8_t *)ps;
-+  }
-
-   sum += t;                     /* add end bytes */
-
--  while ((sum >> 16) != 0)      /* combine halves */
--    sum = (sum >> 16) + (sum & 0xffff);
-+  /* Fold 32-bit sum to 16 bits
-+     calling this twice is propably faster than if statements... */
-+  sum = FOLD_U32T(sum);
-+  sum = FOLD_U32T(sum);
-
--  if (odd)
--    sum = ((sum & 0xff) << 8) | ((sum & 0xff00) >> 8);
-+  if (odd) {
-+    sum = SWAP_BYTES_IN_WORD(sum);
-+  }
-
-   return sum;
- }
-@@ -277,18 +287,18 @@ inet_chksum_pseudo(struct pbuf *p,
-       (void *)q, (void *)q->next));
-     acc += LWIP_CHKSUM(q->payload, q->len);
-     /*LWIP_DEBUGF(INET_DEBUG, ("inet_chksum_pseudo(): unwrapped lwip_chksum()=%"X32_F" \n", acc));*/
--    while ((acc >> 16) != 0) {
--      acc = (acc & 0xffffUL) + (acc >> 16);
--    }
-+    /* just executing this next line is probably faster that the if statement needed
-+       to check whether we really need to execute it, and does no harm */
-+    acc = FOLD_U32T(acc);
-     if (q->len % 2 != 0) {
-       swapped = 1 - swapped;
--      acc = ((acc & 0xff) << 8) | ((acc & 0xff00UL) >> 8);
-+      acc = SWAP_BYTES_IN_WORD(acc);
-     }
-     /*LWIP_DEBUGF(INET_DEBUG, ("inet_chksum_pseudo(): wrapped lwip_chksum()=%"X32_F" \n", acc));*/
-   }
-
-   if (swapped) {
--    acc = ((acc & 0xff) << 8) | ((acc & 0xff00UL) >> 8);
-+    acc = SWAP_BYTES_IN_WORD(acc);
-   }
-   acc += (src->addr & 0xffffUL);
-   acc += ((src->addr >> 16) & 0xffffUL);
-@@ -297,9 +307,10 @@ inet_chksum_pseudo(struct pbuf *p,
-   acc += (u32_t)htons((u16_t)proto);
-   acc += (u32_t)htons(proto_len);
-
--  while ((acc >> 16) != 0) {
--    acc = (acc & 0xffffUL) + (acc >> 16);
--  }
-+  /* Fold 32-bit sum to 16 bits
-+     calling this twice is propably faster than if statements... */
-+  acc = FOLD_U32T(acc);
-+  acc = FOLD_U32T(acc);
-   LWIP_DEBUGF(INET_DEBUG, ("inet_chksum_pseudo(): pbuf chain lwip_chksum()=%"X32_F"\n", acc));
-   return (u16_t)~(acc & 0xffffUL);
- }
-@@ -340,18 +351,17 @@ inet_chksum_pseudo_partial(struct pbuf *
-     chksum_len -= chklen;
-     LWIP_ASSERT("delete me", chksum_len < 0x7fff);
-     /*LWIP_DEBUGF(INET_DEBUG, ("inet_chksum_pseudo(): unwrapped lwip_chksum()=%"X32_F" \n", acc));*/
--    while ((acc >> 16) != 0) {
--      acc = (acc & 0xffffUL) + (acc >> 16);
--    }
-+    /* fold the upper bit down */
-+    acc = FOLD_U32T(acc);
-     if (q->len % 2 != 0) {
-       swapped = 1 - swapped;
--      acc = ((acc & 0xff) << 8) | ((acc & 0xff00UL) >> 8);
-+      acc = SWAP_BYTES_IN_WORD(acc);
-     }
-     /*LWIP_DEBUGF(INET_DEBUG, ("inet_chksum_pseudo(): wrapped lwip_chksum()=%"X32_F" \n", acc));*/
-   }
-
-   if (swapped) {
--    acc = ((acc & 0xff) << 8) | ((acc & 0xff00UL) >> 8);
-+    acc = SWAP_BYTES_IN_WORD(acc);
-   }
-   acc += (src->addr & 0xffffUL);
-   acc += ((src->addr >> 16) & 0xffffUL);
-@@ -360,9 +370,10 @@ inet_chksum_pseudo_partial(struct pbuf *
-   acc += (u32_t)htons((u16_t)proto);
-   acc += (u32_t)htons(proto_len);
-
--  while ((acc >> 16) != 0) {
--    acc = (acc & 0xffffUL) + (acc >> 16);
--  }
-+  /* Fold 32-bit sum to 16 bits
-+     calling this twice is propably faster than if statements... */
-+  acc = FOLD_U32T(acc);
-+  acc = FOLD_U32T(acc);
-   LWIP_DEBUGF(INET_DEBUG, ("inet_chksum_pseudo(): pbuf chain lwip_chksum()=%"X32_F"\n", acc));
-   return (u16_t)~(acc & 0xffffUL);
- }
-@@ -380,13 +391,7 @@ inet_chksum_pseudo_partial(struct pbuf *
- u16_t
- inet_chksum(void *dataptr, u16_t len)
- {
--  u32_t acc;
--
--  acc = LWIP_CHKSUM(dataptr, len);
--  while ((acc >> 16) != 0) {
--    acc = (acc & 0xffff) + (acc >> 16);
--  }
--  return (u16_t)~(acc & 0xffff);
-+  return ~LWIP_CHKSUM(dataptr, len);
- }
-
- /**
-@@ -407,17 +412,15 @@ inet_chksum_pbuf(struct pbuf *p)
-   swapped = 0;
-   for(q = p; q != NULL; q = q->next) {
-     acc += LWIP_CHKSUM(q->payload, q->len);
--    while ((acc >> 16) != 0) {
--      acc = (acc & 0xffffUL) + (acc >> 16);
--    }
-+    acc = FOLD_U32T(acc);
-     if (q->len % 2 != 0) {
-       swapped = 1 - swapped;
--      acc = (acc & 0x00ffUL << 8) | (acc & 0xff00UL >> 8);
-+      acc = SWAP_BYTES_IN_WORD(acc);
-     }
-   }
-
-   if (swapped) {
--    acc = ((acc & 0x00ffUL) << 8) | ((acc & 0xff00UL) >> 8);
-+    acc = SWAP_BYTES_IN_WORD(acc);
-   }
-   return (u16_t)~(acc & 0xffffUL);
- }
-Index: src/core/ipv4/ip.c
-===================================================================
-RCS file: /sources/lwip/lwip/src/core/ipv4/ip.c,v
-retrieving revision 1.66
-retrieving revision 1.68
-diff -u -p -r1.66 -r1.68
---- a/src/core/ipv4/ip.c	14 Jan 2008 20:53:23 -0000	1.66
-+++ b/src/core/ipv4/ip.c	17 Jun 2008 19:39:22 -0000	1.68
-@@ -531,9 +531,19 @@ ip_output_if(struct pbuf *p, struct ip_a
-   LWIP_DEBUGF(IP_DEBUG, ("ip_output_if: %c%c%"U16_F"\n", netif->name[0], netif->name[1], netif->num));
-   ip_debug_print(p);
-
--  LWIP_DEBUGF(IP_DEBUG, ("netif->output()"));
-+#if (LWIP_NETIF_LOOPBACK || LWIP_HAVE_LOOPIF)
-+  if (ip_addr_cmp(dest, &netif->ip_addr)) {
-+    /* Packet to self, enqueue it for loopback */
-+    LWIP_DEBUGF(IP_DEBUG, ("netif_loop_output()"));
-+
-+    return netif_loop_output(netif, p, dest);
-+  } else
-+#endif /* (LWIP_NETIF_LOOPBACK || LWIP_HAVE_LOOPIF) */
-+  {
-+    LWIP_DEBUGF(IP_DEBUG, ("netif->output()"));
-
--  return netif->output(netif, p, dest);
-+    return netif->output(netif, p, dest);
-+  }
- }
-
- /**
-Index: src/include/lwip/debug.h
-===================================================================
-RCS file: /sources/lwip/lwip/src/include/lwip/debug.h,v
-retrieving revision 1.37
-retrieving revision 1.39
-diff -u -p -r1.37 -r1.39
---- a/src/include/lwip/debug.h	22 Sep 2007 11:16:07 -0000	1.37
-+++ b/src/include/lwip/debug.h	16 Jul 2008 20:36:22 -0000	1.39
-@@ -61,26 +61,28 @@
- #define LWIP_DBG_HALT          0x08U
-
- #ifndef LWIP_NOASSERT
--#define LWIP_ASSERT(x,y) do { if(!(y)) LWIP_PLATFORM_ASSERT(x); } while(0)
-+#define LWIP_ASSERT(message, assertion) do { if(!(assertion)) \
-+  LWIP_PLATFORM_ASSERT(message); } while(0)
- #else  /* LWIP_NOASSERT */
--#define LWIP_ASSERT(x,y)
-+#define LWIP_ASSERT(message, assertion)
- #endif /* LWIP_NOASSERT */
-
--/** print "m" message only if "e" is true, and execute "h" expression */
-+/** if "expression" isn't true, then print "message" and execute "handler" expression */
- #ifndef LWIP_ERROR
--#define LWIP_ERROR(m,e,h) do { if (!(e)) { LWIP_PLATFORM_ASSERT(m); h;}} while(0)
-+#define LWIP_ERROR(message, expression, handler) do { if (!(expression)) { \
-+  LWIP_PLATFORM_ASSERT(message); handler;}} while(0)
- #endif /* LWIP_ERROR */
-
- #ifdef LWIP_DEBUG
- /** print debug message only if debug message type is enabled...
-  *  AND is of correct type AND is at least LWIP_DBG_LEVEL
-  */
--#define LWIP_DEBUGF(debug,x) do { \
-+#define LWIP_DEBUGF(debug, message) do { \
-                                if ( \
-                                    ((debug) & LWIP_DBG_ON) && \
-                                    ((debug) & LWIP_DBG_TYPES_ON) && \
-                                    ((s16_t)((debug) & LWIP_DBG_MASK_LEVEL) >= LWIP_DBG_MIN_LEVEL)) { \
--                                 LWIP_PLATFORM_DIAG(x); \
-+                                 LWIP_PLATFORM_DIAG(message); \
-                                  if ((debug) & LWIP_DBG_HALT) { \
-                                    while(1); \
-                                  } \
-@@ -88,7 +90,7 @@
-                              } while(0)
-
- #else  /* LWIP_DEBUG */
--#define LWIP_DEBUGF(debug,x)
-+#define LWIP_DEBUGF(debug, message)
- #endif /* LWIP_DEBUG */
-
- #endif /* __LWIP_DEBUG_H__ */
-Index: src/include/lwip/err.h
-===================================================================
-RCS file: /sources/lwip/lwip/src/include/lwip/err.h,v
-retrieving revision 1.13
-retrieving revision 1.15
-diff -u -p -r1.13 -r1.15
---- a/src/include/lwip/err.h	13 Dec 2007 23:06:50 -0000	1.13
-+++ b/src/include/lwip/err.h	17 Jun 2008 20:27:32 -0000	1.15
-@@ -33,37 +33,43 @@
- #define __LWIP_ERR_H__
-
- #include "lwip/opt.h"
-+#include "lwip/arch.h"
-
- #ifdef __cplusplus
- extern "C" {
- #endif
-
--typedef s8_t err_t;
-+/** Define LWIP_ERR_T in cc.h if you want to use
-+ *  a different type for your platform (must be signed). */
-+#ifdef LWIP_ERR_T
-+typedef LWIP_ERR_T err_t;
-+#else /* LWIP_ERR_T */
-+ typedef s8_t err_t;
-+#endif /* LWIP_ERR_T*/
-
- /* Definitions for error constants. */
-
- #define ERR_OK          0    /* No error, everything OK. */
- #define ERR_MEM        -1    /* Out of memory error.     */
- #define ERR_BUF        -2    /* Buffer error.            */
--#define ERR_RTE        -3    /* Routing problem.         */
-+#define ERR_TIMEOUT    -3    /* Timeout.                 */
-+#define ERR_RTE        -4    /* Routing problem.         */
-
- #define ERR_IS_FATAL(e) ((e) < ERR_RTE)
-
--#define ERR_ABRT       -4    /* Connection aborted.      */
--#define ERR_RST        -5    /* Connection reset.        */
--#define ERR_CLSD       -6    /* Connection closed.       */
--#define ERR_CONN       -7    /* Not connected.           */
-+#define ERR_ABRT       -5    /* Connection aborted.      */
-+#define ERR_RST        -6    /* Connection reset.        */
-+#define ERR_CLSD       -7    /* Connection closed.       */
-+#define ERR_CONN       -8    /* Not connected.           */
-
--#define ERR_VAL        -8    /* Illegal value.           */
-+#define ERR_VAL        -9    /* Illegal value.           */
-
--#define ERR_ARG        -9    /* Illegal argument.        */
-+#define ERR_ARG        -10   /* Illegal argument.        */
-
--#define ERR_USE        -10   /* Address in use.          */
-+#define ERR_USE        -11   /* Address in use.          */
-
--#define ERR_IF         -11   /* Low-level netif error    */
--#define ERR_ISCONN     -12   /* Already connected.       */
--
--#define ERR_TIMEOUT    -13   /* Timeout.                 */
-+#define ERR_IF         -12   /* Low-level netif error    */
-+#define ERR_ISCONN     -13   /* Already connected.       */
-
- #define ERR_INPROGRESS -14   /* Operation in progress    */
-
-Index: src/include/lwip/mem.h
-===================================================================
-RCS file: /sources/lwip/lwip/src/include/lwip/mem.h,v
-retrieving revision 1.21
-retrieving revision 1.22
-diff -u -p -r1.21 -r1.22
---- a/src/include/lwip/mem.h	4 Mar 2008 16:31:32 -0000	1.21
-+++ b/src/include/lwip/mem.h	30 May 2008 11:37:15 -0000	1.22
-@@ -50,16 +50,16 @@ typedef size_t mem_size_t;
-  * allow these defines to be overridden.
-  */
- #ifndef mem_free
--#define mem_free(x) free(x)
-+#define mem_free free
- #endif
- #ifndef mem_malloc
--#define mem_malloc(x) malloc(x)
-+#define mem_malloc malloc
- #endif
- #ifndef mem_calloc
--#define mem_calloc(x, y) calloc(x, y)
-+#define mem_calloc calloc
- #endif
- #ifndef mem_realloc
--#define mem_realloc(x, size) (x)
-+#define mem_realloc realloc
- #endif
- #else /* MEM_LIBC_MALLOC */
-
-Index: src/include/lwip/netif.h
-===================================================================
-RCS file: /sources/lwip/lwip/src/include/lwip/netif.h,v
-retrieving revision 1.43
-retrieving revision 1.46
-diff -u -p -r1.43 -r1.46
---- a/src/include/lwip/netif.h	9 Oct 2007 19:59:59 -0000	1.43
-+++ b/src/include/lwip/netif.h	19 Jun 2008 16:27:23 -0000	1.46
-@@ -34,6 +34,8 @@
-
- #include "lwip/opt.h"
-
-+#define ENABLE_LOOPBACK (LWIP_NETIF_LOOPBACK || LWIP_HAVE_LOOPIF)
-+
- #include "lwip/err.h"
-
- #include "lwip/ip_addr.h"
-@@ -165,6 +167,14 @@ struct netif {
- #if LWIP_NETIF_HWADDRHINT
-   u8_t *addr_hint;
- #endif /* LWIP_NETIF_HWADDRHINT */
-+#if ENABLE_LOOPBACK
-+  /* List of packets to be queued for ourselves. */
-+  struct pbuf *loop_first;
-+  struct pbuf *loop_last;
-+#if LWIP_LOOPBACK_MAX_PBUFS
-+  u16_t loop_cnt_current;
-+#endif /* LWIP_LOOPBACK_MAX_PBUFS */
-+#endif /* ENABLE_LOOPBACK */
- };
-
- #if LWIP_SNMP
-@@ -242,4 +252,12 @@ void netif_set_link_callback(struct neti
- }
- #endif
-
-+#if ENABLE_LOOPBACK
-+err_t netif_loop_output(struct netif *netif, struct pbuf *p, struct ip_addr *dest_ip);
-+void netif_poll(struct netif *netif);
-+#if !LWIP_NETIF_LOOPBACK_MULTITHREADING
-+void netif_poll_all(void);
-+#endif /* !LWIP_NETIF_LOOPBACK_MULTITHREADING */
-+#endif /* ENABLE_LOOPBACK */
-+
- #endif /* __LWIP_NETIF_H__ */
-Index: src/include/lwip/opt.h
-===================================================================
-RCS file: /sources/lwip/lwip/src/include/lwip/opt.h,v
-retrieving revision 1.116
-retrieving revision 1.122
-diff -u -p -r1.116 -r1.122
---- a/src/include/lwip/opt.h	31 Jan 2008 18:19:29 -0000	1.116
-+++ b/src/include/lwip/opt.h	30 Jun 2008 18:16:52 -0000	1.122
-@@ -155,6 +155,27 @@
- #define MEMP_USE_CUSTOM_POOLS           0
- #endif
-
-+/**
-+ * Set this to 1 if you want to free PBUF_RAM pbufs (or call mem_free()) from
-+ * interrupt context (or another context that doesn't allow waiting for a
-+ * semaphore).
-+ * If set to 1, mem_malloc will be protected by a semaphore and SYS_ARCH_PROTECT,
-+ * while mem_free will only use SYS_ARCH_PROTECT. mem_malloc SYS_ARCH_UNPROTECTs
-+ * with each loop so that mem_free can run.
-+ *
-+ * ATTENTION: As you can see from the above description, this leads to dis-/
-+ * enabling interrupts often, which can be slow! Also, on low memory, mem_malloc
-+ * can need longer.
-+ *
-+ * If you don't want that, at least for NO_SYS=0, you can still use the following
-+ * functions to enqueue a deallocation call which then runs in the tcpip_thread
-+ * context:
-+ * - pbuf_free_callback(p);
-+ * - mem_free_callback(m);
-+ */
-+#ifndef LWIP_ALLOW_MEM_FREE_FROM_OTHER_CONTEXT
-+#define LWIP_ALLOW_MEM_FREE_FROM_OTHER_CONTEXT 0
-+#endif
-
- /*
-    ------------------------------------------------
-@@ -815,6 +836,39 @@
- #define LWIP_NETIF_HWADDRHINT           0
- #endif
-
-+/**
-+ * LWIP_NETIF_LOOPBACK==1: Support sending packets with a destination IP
-+ * address equal to the netif IP address, looping them back up the stack.
-+ */
-+#ifndef LWIP_NETIF_LOOPBACK
-+#define LWIP_NETIF_LOOPBACK             0
-+#endif
-+
-+/**
-+ * LWIP_LOOPBACK_MAX_PBUFS: Maximum number of pbufs on queue for loopback
-+ * sending for each netif (0 = disabled)
-+ */
-+#ifndef LWIP_LOOPBACK_MAX_PBUFS
-+#define LWIP_LOOPBACK_MAX_PBUFS         0
-+#endif
-+
-+/**
-+ * LWIP_NETIF_LOOPBACK_MULTITHREADING: Indicates whether threading is enabled in
-+ * the system, as netifs must change how they behave depending on this setting
-+ * for the LWIP_NETIF_LOOPBACK option to work.
-+ * Setting this is needed to avoid reentering non-reentrant functions like
-+ * tcp_input().
-+ *    LWIP_NETIF_LOOPBACK_MULTITHREADING==1: Indicates that the user is using a
-+ *       multithreaded environment like tcpip.c. In this case, netif->input()
-+ *       is called directly.
-+ *    LWIP_NETIF_LOOPBACK_MULTITHREADING==0: Indicates a polling (or NO_SYS) setup.
-+ *       The packets are put on a list and netif_poll() must be called in
-+ *       the main application loop.
-+ */
-+#ifndef LWIP_NETIF_LOOPBACK_MULTITHREADING
-+#define LWIP_NETIF_LOOPBACK_MULTITHREADING    (!NO_SYS)
-+#endif
-+
- /*
-    ------------------------------------
-    ---------- LOOPIF options ----------
-@@ -827,20 +881,16 @@
- #define LWIP_HAVE_LOOPIF                0
- #endif
-
-+/*
-+   ------------------------------------
-+   ---------- SLIPIF options ----------
-+   ------------------------------------
-+*/
- /**
-- * LWIP_LOOPIF_MULTITHREADING: Indicates whether threading is enabled in
-- * the system, as LOOPIF must change how it behaves depending on this setting.
-- * Setting this is needed to avoid reentering non-reentrant functions like
-- * tcp_input().
-- *    LWIP_LOOPIF_MULTITHREADING==1: Indicates that the user is using a
-- *       multithreaded environment like tcpip.c. In this case, netif->input()
-- *       is called directly.
-- *    LWIP_LOOPIF_MULTITHREADING==0: Indicates a polling (or NO_SYS) setup.
-- *       The packets are put on a list and loopif_poll() must be called in
-- *       the main application loop.
-+ * LWIP_HAVE_SLIPIF==1: Support slip interface and slipif.c
-  */
--#ifndef LWIP_LOOPIF_MULTITHREADING
--#define LWIP_LOOPIF_MULTITHREADING      1
-+#ifndef LWIP_HAVE_SLIPIF
-+#define LWIP_HAVE_SLIPIF                0
- #endif
-
- /*
-Index: src/include/lwip/sio.h
-===================================================================
-RCS file: /sources/lwip/lwip/src/include/lwip/sio.h,v
-retrieving revision 1.7
-retrieving revision 1.8
-diff -u -p -r1.7 -r1.8
---- a/src/include/lwip/sio.h	6 Sep 2007 16:43:44 -0000	1.7
-+++ b/src/include/lwip/sio.h	27 Mar 2008 18:06:02 -0000	1.8
-@@ -32,16 +32,24 @@
-  * It needs to be implemented by those platforms which need SLIP or PPP
-  */
-
-+#ifndef __SIO_H__
-+#define __SIO_H__
-+
- #include "lwip/arch.h"
-
- #ifdef __cplusplus
- extern "C" {
- #endif
-
-+/* If you want to define sio_fd_t elsewhere or differently,
-+   define this in your cc.h file. */
- #ifndef __sio_fd_t_defined
- typedef void * sio_fd_t;
- #endif
-
-+/* The following functions can be defined to something else in your cc.h file
-+   or be implemented in your custom sio.c file. */
-+
- #ifndef sio_open
- sio_fd_t sio_open(u8_t);
- #endif
-@@ -69,3 +77,5 @@ void sio_read_abort(sio_fd_t);
- #ifdef __cplusplus
- }
- #endif
-+
-+#endif /* __SIO_H__ */
-Index: src/include/lwip/sockets.h
-===================================================================
-RCS file: /sources/lwip/lwip/src/include/lwip/sockets.h,v
-retrieving revision 1.38
-retrieving revision 1.39
-diff -u -p -r1.38 -r1.39
---- a/src/include/lwip/sockets.h	2 Dec 2007 15:24:02 -0000	1.38
-+++ b/src/include/lwip/sockets.h	26 Apr 2008 10:46:23 -0000	1.39
-@@ -177,7 +177,22 @@ typedef struct ip_mreq {
- } ip_mreq;
- #endif /* LWIP_IGMP */
-
--/* Unimplemented for now... */
-+/*
-+ * The Type of Service provides an indication of the abstract
-+ * parameters of the quality of service desired.  These parameters are
-+ * to be used to guide the selection of the actual service parameters
-+ * when transmitting a datagram through a particular network.  Several
-+ * networks offer service precedence, which somehow treats high
-+ * precedence traffic as more important than other traffic (generally
-+ * by accepting only traffic above a certain precedence at time of high
-+ * load).  The major choice is a three way tradeoff between low-delay,
-+ * high-reliability, and high-throughput.
-+ * The use of the Delay, Throughput, and Reliability indications may
-+ * increase the cost (in some sense) of the service.  In many networks
-+ * better performance for one of these parameters is coupled with worse
-+ * performance on another.  Except for very unusual cases at most two
-+ * of these three indications should be set.
-+ */
- #define IPTOS_TOS_MASK          0x1E
- #define IPTOS_TOS(tos)          ((tos) & IPTOS_TOS_MASK)
- #define IPTOS_LOWDELAY          0x10
-@@ -187,7 +202,13 @@ typedef struct ip_mreq {
- #define IPTOS_MINCOST           IPTOS_LOWCOST
-
- /*
-- * Definitions for IP precedence (also in ip_tos) (Unimplemented)
-+ * The Network Control precedence designation is intended to be used
-+ * within a network only.  The actual use and control of that
-+ * designation is up to each network. The Internetwork Control
-+ * designation is intended for use by gateway control originators only.
-+ * If the actual use of these precedence designations is of concern to
-+ * a particular network, it is the responsibility of that network to
-+ * control the access to, and use of, those precedence designations.
-  */
- #define IPTOS_PREC_MASK                 0xe0
- #define IPTOS_PREC(tos)                ((tos) & IPTOS_PREC_MASK)
-Index: src/include/lwip/stats.h
-===================================================================
-RCS file: /sources/lwip/lwip/src/include/lwip/stats.h,v
-retrieving revision 1.19
-retrieving revision 1.23
-diff -u -p -r1.19 -r1.23
---- a/src/include/lwip/stats.h	28 Nov 2007 21:25:07 -0000	1.19
-+++ b/src/include/lwip/stats.h	8 Jul 2008 09:15:57 -0000	1.23
-@@ -57,7 +57,6 @@ extern "C" {
-
- struct stats_proto {
-   STAT_COUNTER xmit;             /* Transmitted packets. */
--  STAT_COUNTER rexmit;           /* Retransmitted packets. */
-   STAT_COUNTER recv;             /* Received packets. */
-   STAT_COUNTER fw;               /* Forwarded packets. */
-   STAT_COUNTER drop;             /* Dropped packets. */
-@@ -87,7 +86,8 @@ struct stats_mem {
-   mem_size_t avail;
-   mem_size_t used;
-   mem_size_t max;
--  mem_size_t err;
-+  STAT_COUNTER err;
-+  STAT_COUNTER illegal;
- };
-
- struct stats_syselem {
-@@ -142,64 +142,138 @@ extern struct stats_ lwip_stats;
- #define stats_init() /* Compatibility define, not init needed. */
-
- #define STATS_INC(x) ++lwip_stats.x
-+#define STATS_DEC(x) --lwip_stats.x
- #else
- #define stats_init()
- #define STATS_INC(x)
-+#define STATS_DEC(x)
- #endif /* LWIP_STATS */
-
- #if TCP_STATS
- #define TCP_STATS_INC(x) STATS_INC(x)
-+#define TCP_STATS_DISPLAY() stats_display_proto(&lwip_stats.tcp, "TCP")
- #else
- #define TCP_STATS_INC(x)
-+#define TCP_STATS_DISPLAY()
- #endif
-
- #if UDP_STATS
- #define UDP_STATS_INC(x) STATS_INC(x)
-+#define UDP_STATS_DISPLAY() stats_display_proto(&lwip_stats.udp, "UDP")
- #else
- #define UDP_STATS_INC(x)
-+#define UDP_STATS_DISPLAY()
- #endif
-
- #if ICMP_STATS
- #define ICMP_STATS_INC(x) STATS_INC(x)
-+#define ICMP_STATS_DISPLAY() stats_display_proto(&lwip_stats.icmp, "ICMP")
- #else
- #define ICMP_STATS_INC(x)
-+#define ICMP_STATS_DISPLAY()
- #endif
-
- #if IGMP_STATS
- #define IGMP_STATS_INC(x) STATS_INC(x)
-+#define IGMP_STATS_DISPLAY() stats_display_igmp(&lwip_stats.igmp)
- #else
- #define IGMP_STATS_INC(x)
-+#define IGMP_STATS_DISPLAY()
- #endif
-
- #if IP_STATS
- #define IP_STATS_INC(x) STATS_INC(x)
-+#define IP_STATS_DISPLAY() stats_display_proto(&lwip_stats.ip, "IP")
- #else
- #define IP_STATS_INC(x)
-+#define IP_STATS_DISPLAY()
- #endif
-
- #if IPFRAG_STATS
- #define IPFRAG_STATS_INC(x) STATS_INC(x)
-+#define IPFRAG_STATS_DISPLAY() stats_display_proto(&lwip_stats.ip_frag, "IP_FRAG")
- #else
- #define IPFRAG_STATS_INC(x)
-+#define IPFRAG_STATS_DISPLAY()
- #endif
-
- #if ETHARP_STATS
- #define ETHARP_STATS_INC(x) STATS_INC(x)
-+#define ETHARP_STATS_DISPLAY() stats_display_proto(&lwip_stats.etharp, "ETHARP")
- #else
- #define ETHARP_STATS_INC(x)
-+#define ETHARP_STATS_DISPLAY()
- #endif
-
- #if LINK_STATS
- #define LINK_STATS_INC(x) STATS_INC(x)
-+#define LINK_STATS_DISPLAY() stats_display_proto(&lwip_stats.link, "LINK")
- #else
- #define LINK_STATS_INC(x)
-+#define LINK_STATS_DISPLAY()
-+#endif
-+
-+#if MEM_STATS
-+#define MEM_STATS_AVAIL(x, y) lwip_stats.mem.x = y
-+#define MEM_STATS_INC(x) STATS_INC(mem.x)
-+#define MEM_STATS_INC_USED(x, y) do { lwip_stats.mem.used += y; \
-+                                    if (lwip_stats.mem.max < lwip_stats.mem.used) { \
-+                                        lwip_stats.mem.max = lwip_stats.mem.used; \
-+                                    } \
-+                                 } while(0)
-+#define MEM_STATS_DEC_USED(x, y) lwip_stats.mem.x -= y
-+#define MEM_STATS_DISPLAY() stats_display_mem(&lwip_stats.mem, "HEAP")
-+#else
-+#define MEM_STATS_AVAIL(x, y)
-+#define MEM_STATS_INC(x)
-+#define MEM_STATS_INC_USED(x, y)
-+#define MEM_STATS_DEC_USED(x, y)
-+#define MEM_STATS_DISPLAY()
-+#endif
-+
-+#if MEMP_STATS
-+#define MEMP_STATS_AVAIL(x, i, y) lwip_stats.memp[i].x = y
-+#define MEMP_STATS_INC(x, i) STATS_INC(memp[i].x)
-+#define MEMP_STATS_DEC(x, i) STATS_DEC(memp[i].x)
-+#define MEMP_STATS_INC_USED(x, i) do { ++lwip_stats.memp[i].used; \
-+                                    if (lwip_stats.memp[i].max < lwip_stats.memp[i].used) { \
-+                                        lwip_stats.memp[i].max = lwip_stats.memp[i].used; \
-+                                    } \
-+                                 } while(0)
-+#define MEMP_STATS_DISPLAY(i) stats_display_memp(&lwip_stats.memp[i], i)
-+#else
-+#define MEMP_STATS_AVAIL(x, i, y)
-+#define MEMP_STATS_INC(x, i)
-+#define MEMP_STATS_DEC(x, i)
-+#define MEMP_STATS_INC_USED(x, i)
-+#define MEMP_STATS_DISPLAY(i)
-+#endif
-+
-+#if SYS_STATS
-+#define SYS_STATS_INC(x) STATS_INC(sys.x)
-+#define SYS_STATS_DEC(x) STATS_DEC(sys.x)
-+#define SYS_STATS_DISPLAY() stats_display_sys(&lwip_stats.sys)
-+#else
-+#define SYS_STATS_INC(x)
-+#define SYS_STATS_DEC(x)
-+#define SYS_STATS_DISPLAY()
- #endif
-
- /* Display of statistics */
- #if LWIP_STATS_DISPLAY
- void stats_display(void);
-+void stats_display_proto(struct stats_proto *proto, char *name);
-+void stats_display_igmp(struct stats_igmp *igmp);
-+void stats_display_mem(struct stats_mem *mem, char *name);
-+void stats_display_memp(struct stats_mem *mem, int index);
-+void stats_display_sys(struct stats_sys *sys);
- #else
- #define stats_display()
-+#define stats_display_proto(proto, name)
-+#define stats_display_igmp(igmp)
-+#define stats_display_mem(mem, name)
-+#define stats_display_memp(mem, index)
-+#define stats_display_sys(sys)
- #endif /* LWIP_STATS_DISPLAY */
-
- #ifdef __cplusplus
-Index: src/include/lwip/tcpip.h
-===================================================================
-RCS file: /sources/lwip/lwip/src/include/lwip/tcpip.h,v
-retrieving revision 1.24
-retrieving revision 1.27
-diff -u -p -r1.24 -r1.27
---- a/src/include/lwip/tcpip.h	12 Jan 2008 11:52:22 -0000	1.24
-+++ b/src/include/lwip/tcpip.h	27 Jun 2008 20:34:55 -0000	1.27
-@@ -83,7 +83,11 @@ err_t tcpip_netifapi_lock(struct netifap
- #endif /* LWIP_NETIF_API */
-
- err_t tcpip_callback_with_block(void (*f)(void *ctx), void *ctx, u8_t block);
--#define tcpip_callback(f,ctx) tcpip_callback_with_block(f,ctx,1)
-+#define tcpip_callback(f, ctx)              tcpip_callback_with_block(f, ctx, 1)
-+
-+/* free pbufs or heap memory from another context without blocking */
-+err_t pbuf_free_callback(struct pbuf *p);
-+err_t mem_free_callback(void *m);
-
- err_t tcpip_timeout(u32_t msecs, sys_timeout_handler h, void *arg);
- #define tcpip_untimeout(h, arg) tcpip_timeout(0xffffffff, h, arg)
-Index: src/include/netif/loopif.h
-===================================================================
-RCS file: /sources/lwip/lwip/src/include/netif/loopif.h,v
-retrieving revision 1.7
-retrieving revision 1.9
-diff -u -p -r1.7 -r1.9
---- a/src/include/netif/loopif.h	10 May 2007 10:59:20 -0000	1.7
-+++ b/src/include/netif/loopif.h	17 Jun 2008 20:12:22 -0000	1.9
-@@ -32,6 +32,7 @@
- #ifndef __NETIF_LOOPIF_H__
- #define __NETIF_LOOPIF_H__
-
-+#include "lwip/opt.h"
- #include "lwip/netif.h"
- #include "lwip/err.h"
-
-@@ -39,9 +40,9 @@
- extern "C" {
- #endif
-
--#if !LWIP_LOOPIF_MULTITHREADING
--void loopif_poll(struct netif *netif);
--#endif
-+#if !LWIP_NETIF_LOOPBACK_MULTITHREADING
-+#define loopif_poll netif_poll
-+#endif /* !LWIP_NETIF_LOOPBACK_MULTITHREADING */
-
- err_t loopif_init(struct netif *netif);
-
-Index: src/netif/etharp.c
-===================================================================
-RCS file: /sources/lwip/lwip/src/netif/etharp.c,v
-retrieving revision 1.145
-retrieving revision 1.148
-diff -u -p -r1.145 -r1.148
---- a/src/netif/etharp.c	4 Mar 2008 13:41:24 -0000	1.145
-+++ b/src/netif/etharp.c	19 Jun 2008 16:40:59 -0000	1.148
-@@ -353,7 +353,7 @@ find_entry(struct ip_addr *ipaddr, u8_t
-    * 1) empty entry
-    * 2) oldest stable entry
-    * 3) oldest pending entry without queued packets
--   * 4) oldest pending entry without queued packets
-+   * 4) oldest pending entry with queued packets
-    *
-    * { ETHARP_TRY_HARD is set at this point }
-    */
-@@ -1130,7 +1130,14 @@ ethernet_input(struct pbuf *p, struct ne
-
-   /* points to packet payload, which starts with an Ethernet header */
-   ethhdr = p->payload;
--
-+  LWIP_DEBUGF(ETHARP_DEBUG | LWIP_DBG_TRACE,
-+    ("ethernet_input: dest:%02x:%02x:%02x:%02x:%02x:%02x, src:%02x:%02x:%02x:%02x:%02x:%02x, type:%2hx\n",
-+     (unsigned)ethhdr->dest.addr[0], (unsigned)ethhdr->dest.addr[1], (unsigned)ethhdr->dest.addr[2],
-+     (unsigned)ethhdr->dest.addr[3], (unsigned)ethhdr->dest.addr[4], (unsigned)ethhdr->dest.addr[5],
-+     (unsigned)ethhdr->src.addr[0], (unsigned)ethhdr->src.addr[1], (unsigned)ethhdr->src.addr[2],
-+     (unsigned)ethhdr->src.addr[3], (unsigned)ethhdr->src.addr[4], (unsigned)ethhdr->src.addr[5],
-+     (unsigned)htons(ethhdr->type)));
-+
-   switch (htons(ethhdr->type)) {
-     /* IP packet? */
-     case ETHTYPE_IP:
-@@ -1165,6 +1172,8 @@ ethernet_input(struct pbuf *p, struct ne
- #endif /* PPPOE_SUPPORT */
-
-     default:
-+      ETHARP_STATS_INC(etharp.proterr);
-+      ETHARP_STATS_INC(etharp.drop);
-       pbuf_free(p);
-       p = NULL;
-       break;
-Index: src/netif/loopif.c
-===================================================================
-RCS file: /sources/lwip/lwip/src/netif/loopif.c,v
-retrieving revision 1.26
-retrieving revision 1.27
-diff -u -p -r1.26 -r1.27
---- a/src/netif/loopif.c	31 Aug 2007 10:14:09 -0000	1.26
-+++ b/src/netif/loopif.c	12 Jun 2008 20:10:10 -0000	1.27
-@@ -40,149 +40,8 @@
- #if LWIP_HAVE_LOOPIF
-
- #include "netif/loopif.h"
--#include "lwip/pbuf.h"
- #include "lwip/snmp.h"
-
--#include <string.h>
--
--#if !LWIP_LOOPIF_MULTITHREADING
--
--#include "lwip/sys.h"
--#include "lwip/mem.h"
--
--/* helper struct for the linked list of pbufs */
--struct loopif_private {
--  struct pbuf *first;
--  struct pbuf *last;
--};
--
--/**
-- * Call loopif_poll() in the main loop of your application. This is to prevent
-- * reentering non-reentrant functions like tcp_input(). Packets passed to
-- * loopif_output() are put on a list that is passed to netif->input() by
-- * loopif_poll().
-- *
-- * @param netif the lwip network interface structure for this loopif
-- */
--void
--loopif_poll(struct netif *netif)
--{
--  SYS_ARCH_DECL_PROTECT(lev);
--  struct pbuf *in, *in_end;
--  struct loopif_private *priv = (struct loopif_private*)netif->state;
--
--  LWIP_ERROR("priv != NULL", (priv != NULL), return;);
--
--  do {
--    /* Get a packet from the list. With SYS_LIGHTWEIGHT_PROT=1, this is protected */
--    SYS_ARCH_PROTECT(lev);
--    in = priv->first;
--    if(in) {
--      in_end = in;
--      while(in_end->len != in_end->tot_len) {
--        LWIP_ASSERT("bogus pbuf: len != tot_len but next == NULL!", in_end->next != NULL);
--        in_end = in_end->next;
--      }
--      /* 'in_end' now points to the last pbuf from 'in' */
--      if(in_end == priv->last) {
--        /* this was the last pbuf in the list */
--        priv->first = priv->last = NULL;
--      } else {
--        /* pop the pbuf off the list */
--        priv->first = in_end->next;
--        LWIP_ASSERT("should not be null since first != last!", priv->first != NULL);
--      }
--    }
--    SYS_ARCH_UNPROTECT(lev);
--
--    if(in != NULL) {
--      if(in_end->next != NULL) {
--        /* De-queue the pbuf from its successors on the 'priv' list. */
--        in_end->next = NULL;
--      }
--      if(netif->input(in, netif) != ERR_OK) {
--        pbuf_free(in);
--      }
--      /* Don't reference the packet any more! */
--      in = NULL;
--      in_end = NULL;
--    }
--  /* go on while there is a packet on the list */
--  } while(priv->first != NULL);
--}
--#endif /* LWIP_LOOPIF_MULTITHREADING */
--
--/**
-- * Send an IP packet over the loopback interface.
-- * The pbuf is simply copied and handed back to netif->input.
-- * In multithreaded mode, this is done directly since netif->input must put
-- * the packet on a queue.
-- * In callback mode, the packet is put on an internal queue and is fed to
-- * netif->input by loopif_poll().
-- *
-- * @param netif the lwip network interface structure for this loopif
-- * @param p the (IP) packet to 'send'
-- * @param ipaddr the ip address to send the packet to (not used for loopif)
-- * @return ERR_OK if the packet has been sent
-- *         ERR_MEM if the pbuf used to copy the packet couldn't be allocated
-- */
--static err_t
--loopif_output(struct netif *netif, struct pbuf *p,
--       struct ip_addr *ipaddr)
--{
--#if !LWIP_LOOPIF_MULTITHREADING
--  SYS_ARCH_DECL_PROTECT(lev);
--  struct loopif_private *priv;
--  struct pbuf *last;
--#endif /* LWIP_LOOPIF_MULTITHREADING */
--  struct pbuf *r;
--  err_t err;
--
--  LWIP_UNUSED_ARG(ipaddr);
--
--  /* Allocate a new pbuf */
--  r = pbuf_alloc(PBUF_RAW, p->tot_len, PBUF_RAM);
--  if (r == NULL) {
--    return ERR_MEM;
--  }
--
--  /* Copy the whole pbuf queue p into the single pbuf r */
--  if ((err = pbuf_copy(r, p)) != ERR_OK) {
--    pbuf_free(r);
--    r = NULL;
--    return err;
--  }
--
--#if LWIP_LOOPIF_MULTITHREADING
--  /* Multithreading environment, netif->input() is supposed to put the packet
--     into a mailbox, so we can safely call it here without risking to re-enter
--     functions that are not reentrant (TCP!!!) */
--  if(netif->input(r, netif) != ERR_OK) {
--    pbuf_free(r);
--    r = NULL;
--  }
--#else /* LWIP_LOOPIF_MULTITHREADING */
--  /* Raw API without threads: put the packet on a linked list which gets emptied
--     through calling loopif_poll(). */
--  priv = (struct loopif_private*)netif->state;
--
--  /* let last point to the last pbuf in chain r */
--  for (last = r; last->next != NULL; last = last->next);
--  SYS_ARCH_PROTECT(lev);
--  if(priv->first != NULL) {
--    LWIP_ASSERT("if first != NULL, last must also be != NULL", priv->last != NULL);
--    priv->last->next = r;
--    priv->last = last;
--  } else {
--    priv->first = r;
--    priv->last = last;
--  }
--  SYS_ARCH_UNPROTECT(lev);
--#endif /* LWIP_LOOPIF_MULTITHREADING */
--
--  return ERR_OK;
--}
--
- /**
-  * Initialize a lwip network interface structure for a loopback interface
-  *
-@@ -193,16 +52,6 @@ loopif_output(struct netif *netif, struc
- err_t
- loopif_init(struct netif *netif)
- {
--#if !LWIP_LOOPIF_MULTITHREADING
--  struct loopif_private *priv;
--
--  priv = (struct loopif_private*)mem_malloc(sizeof(struct loopif_private));
--  if(priv == NULL)
--    return ERR_MEM;
--  priv->first = priv->last = NULL;
--  netif->state = priv;
--#endif /* LWIP_LOOPIF_MULTITHREADING */
--
-   /* initialize the snmp variables and counters inside the struct netif
-    * ifSpeed: no assumption can be made!
-    */
-@@ -210,7 +59,7 @@ loopif_init(struct netif *netif)
-
-   netif->name[0] = 'l';
-   netif->name[1] = 'o';
--  netif->output = loopif_output;
-+  netif->output = netif_loop_output;
-   return ERR_OK;
- }
-
-Index: src/netif/slipif.c
-===================================================================
-RCS file: /sources/lwip/lwip/src/netif/slipif.c,v
-retrieving revision 1.29
-retrieving revision 1.30
-diff -u -p -r1.29 -r1.30
---- a/src/netif/slipif.c	30 Nov 2007 17:22:21 -0000	1.29
-+++ b/src/netif/slipif.c	17 Jun 2008 20:14:05 -0000	1.30
-@@ -44,6 +44,9 @@
-
- #include "netif/slipif.h"
- #include "lwip/opt.h"
-+
-+#if LWIP_HAVE_SLIPIF
-+
- #include "lwip/def.h"
- #include "lwip/pbuf.h"
- #include "lwip/sys.h"
-@@ -273,3 +276,4 @@ slipif_init(struct netif *netif)
-   sys_thread_new(SLIPIF_THREAD_NAME, slipif_loop, netif, SLIPIF_THREAD_STACKSIZE, SLIPIF_THREAD_PRIO);
-   return ERR_OK;
- }
-+#endif /* LWIP_HAVE_SLIPIF */
diff --git a/import-layers/meta-virtualization/recipes-extended/xen/files/mini-os_udivmoddi4-gcc7.patch b/import-layers/meta-virtualization/recipes-extended/xen/files/mini-os_udivmoddi4-gcc7.patch
deleted file mode 100644
index a3745bd..0000000
--- a/import-layers/meta-virtualization/recipes-extended/xen/files/mini-os_udivmoddi4-gcc7.patch
+++ /dev/null
@@ -1,43 +0,0 @@
-From d991bdbc062248221511ecb795617c36b37e1d2e Mon Sep 17 00:00:00 2001
-From: Wei Liu <wei.liu2@citrix.com>
-Date: Wed, 9 Aug 2017 13:15:48 +0100
-Subject: [PATCH] lib/math.c: implement __udivmoddi4
-
-Some code compiled by gcc 7 requires this.
-
-Signed-off-by: Wei Liu <wei.liu2@citrix.com>
-Reviewed-by: Samuel Thibault <samuel.thibault@ens-lyon.org>
----
- lib/math.c | 10 ++++++++++
- 1 file changed, 10 insertions(+)
-
-diff --git a/lib/math.c b/lib/math.c
-index 561393e..b98cc1d 100644
---- a/lib/math.c
-+++ b/lib/math.c
-@@ -6,6 +6,7 @@
-  *        File: math.c
-  *      Author: Rolf Neugebauer (neugebar@dcs.gla.ac.uk)
-  *     Changes: 
-+ *        Implement __udivmoddi4 (Wei Liu <wei.liu2@citrix.com>)
-  *              
-  *        Date: Aug 2003
-  * 
-@@ -397,6 +398,15 @@ __umoddi3(u_quad_t a, u_quad_t b)
- }
- 
- /*
-+ * Returns the quotient and places remainder in r
-+ */
-+u_quad_t
-+__udivmoddi4(u_quad_t a, u_quad_t b, u_quad_t *r)
-+{
-+	return __qdivrem(a, b, r);
-+}
-+
-+/*
-  * From
-  * moddi3.c
-  */
---
-2.11.0
diff --git a/import-layers/meta-virtualization/recipes-extended/xen/files/newlib-chk.patch b/import-layers/meta-virtualization/recipes-extended/xen/files/newlib-chk.patch
deleted file mode 100644
index a5d0149..0000000
--- a/import-layers/meta-virtualization/recipes-extended/xen/files/newlib-chk.patch
+++ /dev/null
@@ -1,155 +0,0 @@
---- a/newlib/libc/stdio/fprintf_chk.c	1969-12-31 19:00:00.000000000 -0500
-+++ b/newlib/libc/stdio/fprintf_chk.c	2009-02-26 19:02:53.000000000 -0500
-@@ -0,0 +1,21 @@
-+#include <stdarg.h>
-+#include <stdio.h>
-+
-+/*
-+ * Stub implementation of __fprintf_chk adapted from glibc 2.7.  This 
-+ * doesn't actually implement any buffer overflow protection.  It just makes
-+ * the linker happy :)
-+*/
-+int
-+__fprintf_chk (FILE *fp, int flag, const char *format, ...)
-+{
-+  va_list ap;
-+  int done;
-+
-+  va_start (ap, format);
-+  done = vfprintf (fp, format, ap);
-+  va_end (ap);
-+
-+  return done;
-+}
-+
---- a/newlib/libc/stdio/Makefile.am	2007-08-02 16:23:06.000000000 -0400
-+++ b/newlib/libc/stdio/Makefile.am	2009-02-26 18:14:53.000000000 -0500
-@@ -20,6 +20,7 @@
- 	flags.c			\
- 	fopen.c			\
- 	fprintf.c			\
-+	fprintf_chk.c		\
- 	fputc.c			\
- 	fputs.c			\
- 	fread.c			\
-@@ -65,6 +66,7 @@
- 	sniprintf.c			\
- 	snprintf.c			\
- 	sprintf.c			\
-+	sprintf_chk.c			\
- 	sscanf.c			\
- 	stdio.c			\
- 	tmpfile.c			\
---- a/newlib/libc/stdio/Makefile.in	2007-12-19 17:36:38.000000000 -0500
-+++ b/newlib/libc/stdio/Makefile.in	2009-02-26 18:43:52.000000000 -0500
-@@ -63,7 +63,8 @@
- 	lib_a-fgets.$(OBJEXT) lib_a-fileno.$(OBJEXT) \
- 	lib_a-findfp.$(OBJEXT) lib_a-fiprintf.$(OBJEXT) \
- 	lib_a-flags.$(OBJEXT) lib_a-fopen.$(OBJEXT) \
--	lib_a-fprintf.$(OBJEXT) lib_a-fputc.$(OBJEXT) \
-+	lib_a-fprintf.$(OBJEXT) lib_a-fprintf_chk.$(OBJEXT) \
-+	lib_a-fputc.$(OBJEXT) \
- 	lib_a-fputs.$(OBJEXT) lib_a-fread.$(OBJEXT) \
- 	lib_a-freopen.$(OBJEXT) lib_a-fscanf.$(OBJEXT) \
- 	lib_a-fiscanf.$(OBJEXT) lib_a-fseek.$(OBJEXT) \
-@@ -86,6 +87,7 @@
- 	lib_a-setvbuf.$(OBJEXT) lib_a-siprintf.$(OBJEXT) \
- 	lib_a-siscanf.$(OBJEXT) lib_a-sniprintf.$(OBJEXT) \
- 	lib_a-snprintf.$(OBJEXT) lib_a-sprintf.$(OBJEXT) \
-+	lib_a-sprintf_chk.$(OBJEXT) \
- 	lib_a-sscanf.$(OBJEXT) lib_a-stdio.$(OBJEXT) \
- 	lib_a-tmpfile.$(OBJEXT) lib_a-tmpnam.$(OBJEXT) \
- 	lib_a-ungetc.$(OBJEXT) lib_a-vdiprintf.$(OBJEXT) \
-@@ -122,15 +124,15 @@
- LTLIBRARIES = $(noinst_LTLIBRARIES)
- am__objects_4 = clearerr.lo fclose.lo fdopen.lo feof.lo ferror.lo \
- 	fflush.lo fgetc.lo fgetpos.lo fgets.lo fileno.lo findfp.lo \
--	fiprintf.lo flags.lo fopen.lo fprintf.lo fputc.lo fputs.lo \
--	fread.lo freopen.lo fscanf.lo fiscanf.lo fseek.lo fsetpos.lo \
-+	fiprintf.lo flags.lo fopen.lo fprintf.lo fprintf_chk.lo fputc.lo \
-+	fputs.lo fread.lo freopen.lo fscanf.lo fiscanf.lo fseek.lo fsetpos.lo \
- 	ftell.lo fvwrite.lo fwalk.lo fwrite.lo getc.lo getchar.lo \
- 	getc_u.lo getchar_u.lo getdelim.lo getline.lo gets.lo \
- 	iprintf.lo iscanf.lo makebuf.lo perror.lo printf.lo putc.lo \
- 	putchar.lo putc_u.lo putchar_u.lo puts.lo refill.lo remove.lo \
- 	rename.lo rewind.lo rget.lo scanf.lo sccl.lo setbuf.lo \
- 	setbuffer.lo setlinebuf.lo setvbuf.lo siprintf.lo siscanf.lo \
--	sniprintf.lo snprintf.lo sprintf.lo sscanf.lo stdio.lo \
-+	sniprintf.lo snprintf.lo sprintf.lo sprintf_chk.lo sscanf.lo stdio.lo \
- 	tmpfile.lo tmpnam.lo ungetc.lo vdiprintf.lo vdprintf.lo \
- 	viprintf.lo viscanf.lo vprintf.lo vscanf.lo vsiprintf.lo \
- 	vsiscanf.lo vsnprintf.lo vsniprintf.lo vsprintf.lo vsscanf.lo \
-@@ -344,6 +346,7 @@
- 	flags.c			\
- 	fopen.c			\
- 	fprintf.c			\
-+	fprintf_chk.c			\
- 	fputc.c			\
- 	fputs.c			\
- 	fread.c			\
-@@ -389,6 +392,7 @@
- 	sniprintf.c			\
- 	snprintf.c			\
- 	sprintf.c			\
-+	sprintf_chk.c			\
- 	sscanf.c			\
- 	stdio.c			\
- 	tmpfile.c			\
-@@ -508,6 +512,7 @@
- 	siprintf.def		\
- 	siscanf.def		\
- 	sprintf.def		\
-+	sprintf_chk.def		\
- 	sscanf.def		\
- 	tmpfile.def		\
- 	tmpnam.def		\
-@@ -678,6 +683,12 @@
- lib_a-fprintf.obj: fprintf.c
- 	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-fprintf.obj `if test -f 'fprintf.c'; then $(CYGPATH_W) 'fprintf.c'; else $(CYGPATH_W) '$(srcdir)/fprintf.c'; fi`
- 
-+lib_a-fprintf_chk.o: fprintf_chk.c
-+	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-fprintf_chk.o `test -f 'fprintf_chk.c' || echo '$(srcdir)/'`fprintf_chk.c
-+
-+lib_a-fprintf_chk.obj: fprintf_chk.c
-+	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-fprintf_chk.obj `if test -f 'fprintf_chk.c'; then $(CYGPATH_W) 'fprintf_chk.c'; else $(CYGPATH_W) '$(srcdir)/fprintf_chk.c'; fi`
-+
- lib_a-fputc.o: fputc.c
- 	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-fputc.o `test -f 'fputc.c' || echo '$(srcdir)/'`fputc.c
- 
-@@ -948,6 +959,12 @@
- lib_a-sprintf.obj: sprintf.c
- 	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-sprintf.obj `if test -f 'sprintf.c'; then $(CYGPATH_W) 'sprintf.c'; else $(CYGPATH_W) '$(srcdir)/sprintf.c'; fi`
- 
-+lib_a-sprintf_chk.o: sprintf_chk.c
-+	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-sprintf_chk.o `test -f 'sprintf_chk.c' || echo '$(srcdir)/'`sprintf_chk.c
-+
-+lib_a-sprintf_chk.obj: sprintf_chk.c
-+	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-sprintf_chk.obj `if test -f 'sprintf_chk.c'; then $(CYGPATH_W) 'sprintf_chk.c'; else $(CYGPATH_W) '$(srcdir)/sprintf_chk.c'; fi`
-+
- lib_a-sscanf.o: sscanf.c
- 	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-sscanf.o `test -f 'sscanf.c' || echo '$(srcdir)/'`sscanf.c
- 
---- a/newlib/libc/stdio/sprintf_chk.c	1969-12-31 19:00:00.000000000 -0500
-+++ b/newlib/libc/stdio/sprintf_chk.c	2009-02-26 19:02:26.000000000 -0500
-@@ -0,0 +1,21 @@
-+#include <stdarg.h>
-+#include <stdio.h>
-+
-+/*
-+ * Stub implementation of __sprintf_chk adapted from glibc 2.7.  This 
-+ * doesn't actually implement any buffer overflow protection.  It just makes
-+ * the linker happy :)
-+*/
-+int
-+__sprintf_chk (char *s, int flags, size_t slen, const char *format, ...)
-+{
-+  va_list arg;
-+  int done;
-+
-+  va_start (arg, format);
-+  done = vsprintf (s, format, arg);
-+  va_end (arg);
-+
-+  return done;
-+}
-+
diff --git a/import-layers/meta-virtualization/recipes-extended/xen/files/newlib-stdint-size_max-fix-from-1.17.0.patch b/import-layers/meta-virtualization/recipes-extended/xen/files/newlib-stdint-size_max-fix-from-1.17.0.patch
deleted file mode 100644
index 3610d64..0000000
--- a/import-layers/meta-virtualization/recipes-extended/xen/files/newlib-stdint-size_max-fix-from-1.17.0.patch
+++ /dev/null
@@ -1,16 +0,0 @@
---- a/newlib/libc/include/stdint.h.orig	2006-08-17 00:39:43.000000000 +0300
-+++ b/newlib/libc/include/stdint.h	2009-08-25 17:33:23.000000000 +0300
-@@ -348,8 +348,11 @@
- #endif
- 
- /* This must match size_t in stddef.h, currently long unsigned int */
--#define SIZE_MIN (-__STDINT_EXP(LONG_MAX) - 1L)
--#define SIZE_MAX __STDINT_EXP(LONG_MAX)
-+#ifdef __SIZE_MAX__
-+#define SIZE_MAX __SIZE_MAX__
-+#else
-+#define SIZE_MAX (__STDINT_EXP(LONG_MAX) * 2UL + 1)
-+#endif
- 
- /* This must match sig_atomic_t in <signal.h> (currently int) */
- #define SIG_ATOMIC_MIN (-__STDINT_EXP(INT_MAX) - 1)
diff --git a/import-layers/meta-virtualization/recipes-extended/xen/files/newlib.patch b/import-layers/meta-virtualization/recipes-extended/xen/files/newlib.patch
deleted file mode 100644
index dbf409a..0000000
--- a/import-layers/meta-virtualization/recipes-extended/xen/files/newlib.patch
+++ /dev/null
@@ -1,727 +0,0 @@
-There is a mix between longs and long longs.
-
-Index: newlib/libc/include/inttypes.h
-===================================================================
-RCS file: /cvs/src/src/newlib/libc/include/inttypes.h,v
-retrieving revision 1.3
-diff -u -p -r1.3 inttypes.h
---- a/newlib/libc/include/inttypes.h	16 Dec 2005 19:03:12 -0000	1.3
-+++ b/newlib/libc/include/inttypes.h	8 Nov 2007 16:32:44 -0000
-@@ -163,12 +163,12 @@
- 
- 
- /* 64-bit types */
--#if __have_longlong64
--#define __PRI64(x) __STRINGIFY(ll##x)
--#define __SCN64(x) __STRINGIFY(ll##x)
--#elif __have_long64
-+#if __have_long64
- #define __PRI64(x) __STRINGIFY(l##x)
- #define __SCN64(x) __STRINGIFY(l##x)
-+#elif __have_longlong64
-+#define __PRI64(x) __STRINGIFY(ll##x)
-+#define __SCN64(x) __STRINGIFY(ll##x)
- #else
- #define __PRI64(x) __STRINGIFY(x)
- #define __SCN64(x) __STRINGIFY(x)
-@@ -217,12 +217,12 @@
- #endif
- 
- /* max-bit types */
--#if __have_longlong64
--#define __PRIMAX(x) __STRINGIFY(ll##x)
--#define __SCNMAX(x) __STRINGIFY(ll##x)
--#elif __have_long64
-+#if __have_long64
- #define __PRIMAX(x) __STRINGIFY(l##x)
- #define __SCNMAX(x) __STRINGIFY(l##x)
-+#elif __have_longlong64
-+#define __PRIMAX(x) __STRINGIFY(ll##x)
-+#define __SCNMAX(x) __STRINGIFY(ll##x)
- #else
- #define __PRIMAX(x) __STRINGIFY(x)
- #define __SCNMAX(x) __STRINGIFY(x)
-@@ -242,12 +242,12 @@
- #define SCNxMAX		__SCNMAX(x)
- 
- /* ptr types */
--#if __have_longlong64
--#define __PRIPTR(x) __STRINGIFY(ll##x)
--#define __SCNPTR(x) __STRINGIFY(ll##x)
--#elif __have_long64
-+#if __have_long64
- #define __PRIPTR(x) __STRINGIFY(l##x)
- #define __SCNPTR(x) __STRINGIFY(l##x)
-+#elif __have_longlong64
-+#define __PRIPTR(x) __STRINGIFY(ll##x)
-+#define __SCNPTR(x) __STRINGIFY(ll##x)
- #else
- #define __PRIPTR(x) __STRINGIFY(x)
- #define __SCNPTR(x) __STRINGIFY(x)
-
-We don't want u?int32_t to be long as our code assume in a lot of places to be
-int.
-
-Index: newlib/libc/include/stdint.h
-===================================================================
-RCS file: /cvs/src/src/newlib/libc/include/stdint.h,v
-retrieving revision 1.10
-diff -u -p -r1.10 stdint.h
---- a/newlib/libc/include/stdint.h	16 Aug 2006 21:39:43 -0000	1.10
-+++ b/newlib/libc/include/stdint.h	12 Feb 2008 13:07:52 -0000
-@@ -38,7 +38,7 @@ extern "C" {
- #if __STDINT_EXP(LONG_MAX) > 0x7fffffff
- #define __have_long64 1
- #elif __STDINT_EXP(LONG_MAX) == 0x7fffffff && !defined(__SPU__)
--#define __have_long32 1
-+/* #define __have_long32 1 */
- #endif
- 
- #if __STDINT_EXP(SCHAR_MAX) == 0x7f
-
-Define the basic ia64 jump buffer
-
-Index: newlib/libc/include/sys/config.h
-===================================================================
-RCS file: /cvs/src/src/newlib/libc/include/sys/config.h,v
-retrieving revision 1.47
-diff -u -p -r1.47 config.h
---- a/newlib/libc/include/sys/config.h	15 Mar 2007 21:32:12 -0000	1.47
-+++ b/newlib/libc/include/sys/config.h	8 Nov 2007 16:32:44 -0000
-@@ -71,6 +71,10 @@
- #endif
- #endif
- 
-+#ifndef __DYNAMIC_REENT__
-+#define __DYNAMIC_REENT__
-+#endif
-+
- #ifdef __mn10200__
- #define __SMALL_BITFIELDS
- #endif
-
-Dynamic pointer to our reentrancy zone
-
-Index: newlib/libc/reent/getreent.c
-===================================================================
-RCS file: /cvs/src/src/newlib/libc/reent/getreent.c,v
-retrieving revision 1.2
-diff -u -p -r1.2 getreent.c
---- a/newlib/libc/reent/getreent.c	7 Sep 2007 00:45:55 -0000	1.2
-+++ b/newlib/libc/reent/getreent.c	8 Nov 2007 16:32:44 -0000
-@@ -3,12 +3,20 @@
- #include <_ansi.h>
- #include <reent.h>
- 
-+#define weak_alias(name, aliasname) \
-+  extern __typeof (name) aliasname __attribute__ ((weak, alias (#name)));
-+
- #ifdef __getreent
- #undef __getreent
- #endif
-+#ifdef __libc_getreent
-+#undef __libc_getreent
-+#endif
- 
- struct _reent *
--_DEFUN_VOID(__getreent)
-+__libc_getreent (void)
- {
-   return _impure_ptr;
- }
-+weak_alias(__libc_getreent,__getreent)
-+
-
-We can't provide a red zone in mini-os.
-
-Index: newlib/libc/machine/x86_64/memcpy.S
-===================================================================
-RCS file: /cvs/src/src/newlib/libc/machine/x86_64/memcpy.S,v
-retrieving revision 1.1
-diff -u -p -r1.1 memcpy.S
---- a/newlib/libc/machine/x86_64/memcpy.S	28 Aug 2007 21:56:49 -0000	1.1
-+++ b/newlib/libc/machine/x86_64/memcpy.S	8 Nov 2007 16:32:44 -0000
-@@ -30,10 +30,18 @@ quadword_aligned:
-   cmpq    $256, rdx
-   jb      quadword_copy
- 
-+#if 1
-+  subq    $32, rsp
-+  movq    rax, 24 (rsp)
-+  movq    r12, 16 (rsp)
-+  movq    r13, 8  (rsp)
-+  movq    r14, 0  (rsp)
-+#else
-   movq    rax, -8  (rsp)
-   movq    r12, -16 (rsp)
-   movq    r13, -24 (rsp)
-   movq    r14, -32 (rsp)
-+#endif
- 
-   movq    rdx, rcx                /* Copy 128 bytes at a time with minimum cache polution */
-   shrq    $7, rcx
-@@ -89,10 +97,18 @@ loop:
-   movq    rdx, rcx
-   andq    $127, rcx
-   rep     movsb
-+#if 1
-+  movq    24 (rsp), rax
-+  movq    16 (rsp), r12
-+  movq    8  (rsp), r13
-+  movq    0  (rsp), r14
-+  addq    $32, rsp
-+#else
-   movq    -8  (rsp), rax
-   movq    -16 (rsp), r12
-   movq    -24 (rsp), r13
-   movq    -32 (rsp), r14
-+#endif
-   ret
- 
- 
---- a/newlib/libc/machine/x86_64/x86_64mach.h.orig	2008-07-11 14:57:23.062269000 +0100
-+++ b/newlib/libc/machine/x86_64/x86_64mach.h	2008-07-11 14:58:01.262503000 +0100
-@@ -22,81 +22,81 @@
- 
- #define REG(x) CONCAT1(__REG_PREFIX__, x)
- 
--#define rax REG(rax)
--#define rbx REG(rbx)
--#define rcx REG(rcx)
--#define rdx REG(rdx)
--#define rsi REG(rsi)
--#define rdi REG(rdi)
--#define rbp REG(rbp)
--#define rsp REG(rsp)
--
--#define r8  REG(r8)
--#define r9  REG(r9)
--#define r10 REG(r10)
--#define r11 REG(r11)
--#define r12 REG(r12)
--#define r13 REG(r13)
--#define r14 REG(r14)
--#define r15 REG(r15)
--
--#define eax REG(eax)
--#define ebx REG(ebx)
--#define ecx REG(ecx)
--#define edx REG(edx)
--#define esi REG(esi)
--#define edi REG(edi)
--#define ebp REG(ebp)
--#define esp REG(esp)
--
--#define st0 REG(st)
--#define st1 REG(st(1))
--#define st2 REG(st(2))
--#define st3 REG(st(3))
--#define st4 REG(st(4))
--#define st5 REG(st(5))
--#define st6 REG(st(6))
--#define st7 REG(st(7))
--
--#define ax REG(ax)
--#define bx REG(bx)
--#define cx REG(cx)
--#define dx REG(dx)
--
--#define ah REG(ah)
--#define bh REG(bh)
--#define ch REG(ch)
--#define dh REG(dh)
--
--#define al REG(al)
--#define bl REG(bl)
--#define cl REG(cl)
--#define dl REG(dl)
--
--#define sil REG(sil)
--
--#define mm1 REG(mm1)
--#define mm2 REG(mm2)
--#define mm3 REG(mm3)
--#define mm4 REG(mm4)
--#define mm5 REG(mm5)
--#define mm6 REG(mm6)
--#define mm7 REG(mm7)
--
--#define xmm0 REG(xmm0)
--#define xmm1 REG(xmm1)
--#define xmm2 REG(xmm2)
--#define xmm3 REG(xmm3)
--#define xmm4 REG(xmm4)
--#define xmm5 REG(xmm5)
--#define xmm6 REG(xmm6)
--#define xmm7 REG(xmm7)
--
--#define cr0 REG(cr0)
--#define cr1 REG(cr1)
--#define cr2 REG(cr2)
--#define cr3 REG(cr3)
--#define cr4 REG(cr4)
-+#define rax %rax
-+#define rbx %rbx
-+#define rcx %rcx
-+#define rdx %rdx
-+#define rsi %rsi
-+#define rdi %rdi
-+#define rbp %rbp
-+#define rsp %rsp
-+
-+#define r8  %r8
-+#define r9  %r9
-+#define r10 %r10
-+#define r11 %r11
-+#define r12 %r12
-+#define r13 %r13
-+#define r14 %r14
-+#define r15 %r15
-+
-+#define eax %eax
-+#define ebx %ebx
-+#define ecx %ecx
-+#define edx %edx
-+#define esi %esi
-+#define edi %edi
-+#define ebp %ebp
-+#define esp %esp
-+
-+#define st0 %st
-+#define st1 %st(1)
-+#define st2 %st(2)
-+#define st3 %st(3)
-+#define st4 %st(4)
-+#define st5 %st(5)
-+#define st6 %st(6)
-+#define st7 %st(7)
-+
-+#define ax %ax
-+#define bx %bx
-+#define cx %cx
-+#define dx %dx
-+
-+#define ah %ah
-+#define bh %bh
-+#define ch %ch
-+#define dh %dh
-+
-+#define al %al
-+#define bl %bl
-+#define cl %cl
-+#define dl %dl
-+
-+#define sil %sil
-+
-+#define mm1 %mm1
-+#define mm2 %mm2
-+#define mm3 %mm3
-+#define mm4 %mm4
-+#define mm5 %mm5
-+#define mm6 %mm6
-+#define mm7 %mm7
-+
-+#define xmm0 %xmm0
-+#define xmm1 %xmm1
-+#define xmm2 %xmm2
-+#define xmm3 %xmm3
-+#define xmm4 %xmm4
-+#define xmm5 %xmm5
-+#define xmm6 %xmm6
-+#define xmm7 %xmm7
-+
-+#define cr0 %cr0
-+#define cr1 %cr1
-+#define cr2 %cr2
-+#define cr3 %cr3
-+#define cr4 %cr4
- 
- #ifdef _I386MACH_NEED_SOTYPE_FUNCTION
- #define SOTYPE_FUNCTION(sym) .type SYM(sym),@function
---- a/newlib/libc/machine/x86_64/memcpy.S.orig	2008-07-11 15:12:27.494693000 +0100
-+++ b/newlib/libc/machine/x86_64/memcpy.S	2008-07-11 15:12:29.448706000 +0100
-@@ -60,14 +60,14 @@
-   movq    48 (rsi), r13
-   movq    56 (rsi), r14
- 
--  movntiq rax,    (rdi)
--  movntiq r8 ,  8 (rdi)
--  movntiq r9 , 16 (rdi)
--  movntiq r10, 24 (rdi)
--  movntiq r11, 32 (rdi)
--  movntiq r12, 40 (rdi)
--  movntiq r13, 48 (rdi)
--  movntiq r14, 56 (rdi)
-+  movnti rax,    (rdi)
-+  movnti r8 ,  8 (rdi)
-+  movnti r9 , 16 (rdi)
-+  movnti r10, 24 (rdi)
-+  movnti r11, 32 (rdi)
-+  movnti r12, 40 (rdi)
-+  movnti r13, 48 (rdi)
-+  movnti r14, 56 (rdi)
- 
-   movq     64 (rsi), rax
-   movq     72 (rsi), r8
-@@ -78,14 +78,14 @@
-   movq    112 (rsi), r13
-   movq    120 (rsi), r14
- 
--  movntiq rax,  64 (rdi)
--  movntiq r8 ,  72 (rdi)
--  movntiq r9 ,  80 (rdi)
--  movntiq r10,  88 (rdi)
--  movntiq r11,  96 (rdi)
--  movntiq r12, 104 (rdi)
--  movntiq r13, 112 (rdi)
--  movntiq r14, 120 (rdi)
-+  movnti rax,  64 (rdi)
-+  movnti r8 ,  72 (rdi)
-+  movnti r9 ,  80 (rdi)
-+  movnti r10,  88 (rdi)
-+  movnti r11,  96 (rdi)
-+  movnti r12, 104 (rdi)
-+  movnti r13, 112 (rdi)
-+  movnti r14, 120 (rdi)
- 
-   leaq    128 (rsi), rsi
-   leaq    128 (rdi), rdi
---- a/newlib/libc/machine/i386/i386mach.h	2000-08-28 18:50:06.000000000 +0100
-+++ b/newlib/libc/machine/i386/i386mach.h	2008-07-11 15:17:13.874409000 +0100
-@@ -27,46 +27,46 @@
-  
- #define REG(x) CONCAT1(__REG_PREFIX__, x)
-  
--#define eax REG(eax)
--#define ebx REG(ebx)
--#define ecx REG(ecx)
--#define edx REG(edx)
--#define esi REG(esi)
--#define edi REG(edi)
--#define ebp REG(ebp)
--#define esp REG(esp)
--
--#define st0 REG(st)
--#define st1 REG(st(1))
--#define st2 REG(st(2))
--#define st3 REG(st(3))
--#define st4 REG(st(4))
--#define st5 REG(st(5))
--#define st6 REG(st(6))
--#define st7 REG(st(7))
--
--#define ax REG(ax)
--#define bx REG(bx)
--#define cx REG(cx)
--#define dx REG(dx)
--
--#define ah REG(ah)
--#define bh REG(bh)
--#define ch REG(ch)
--#define dh REG(dh)
--
--#define al REG(al)
--#define bl REG(bl)
--#define cl REG(cl)
--#define dl REG(dl)
--
--#define mm1 REG(mm1)
--#define mm2 REG(mm2)
--#define mm3 REG(mm3)
--#define mm4 REG(mm4)
--#define mm5 REG(mm5)
--#define mm6 REG(mm6)
--#define mm7 REG(mm7)
-+#define eax %eax
-+#define ebx %ebx
-+#define ecx %ecx
-+#define edx %edx
-+#define esi %esi
-+#define edi %edi
-+#define ebp %ebp
-+#define esp %esp
-+
-+#define st0 %st
-+#define st1 %st(1)
-+#define st2 %st(2)
-+#define st3 %st(3)
-+#define st4 %st(4)
-+#define st5 %st(5)
-+#define st6 %st(6)
-+#define st7 %st(7)
-+
-+#define ax %ax
-+#define bx %bx
-+#define cx %cx
-+#define dx %dx
-+
-+#define ah %ah
-+#define bh %bh
-+#define ch %ch
-+#define dh %dh
-+
-+#define al %al
-+#define bl %bl
-+#define cl %cl
-+#define dl %dl
-+
-+#define mm1 %mm1
-+#define mm2 %mm2
-+#define mm3 %mm3
-+#define mm4 %mm4
-+#define mm5 %mm5
-+#define mm6 %mm6
-+#define mm7 %mm7
- 
- #ifdef _I386MACH_NEED_SOTYPE_FUNCTION
- #define SOTYPE_FUNCTION(sym) .type SYM(sym),@function
---- a/newlib/libc/machine/x86_64/memset.S	2007-08-28 22:56:49.000000000 +0100
-+++ b/newlib/libc/machine/x86_64/memset.S	2008-07-11 15:16:59.098320000 +0100
-@@ -40,22 +40,22 @@
- 
-   .p2align 4
- loop:
--  movntiq rax,     (rdi)
--  movntiq rax,   8 (rdi)
--  movntiq rax,  16 (rdi)
--  movntiq rax,  24 (rdi)
--  movntiq rax,  32 (rdi)
--  movntiq rax,  40 (rdi)
--  movntiq rax,  48 (rdi)
--  movntiq rax,  56 (rdi)
--  movntiq rax,  64 (rdi)
--  movntiq rax,  72 (rdi)
--  movntiq rax,  80 (rdi)
--  movntiq rax,  88 (rdi)
--  movntiq rax,  96 (rdi)
--  movntiq rax, 104 (rdi)
--  movntiq rax, 112 (rdi)
--  movntiq rax, 120 (rdi)
-+  movnti rax,     (rdi)
-+  movnti rax,   8 (rdi)
-+  movnti rax,  16 (rdi)
-+  movnti rax,  24 (rdi)
-+  movnti rax,  32 (rdi)
-+  movnti rax,  40 (rdi)
-+  movnti rax,  48 (rdi)
-+  movnti rax,  56 (rdi)
-+  movnti rax,  64 (rdi)
-+  movnti rax,  72 (rdi)
-+  movnti rax,  80 (rdi)
-+  movnti rax,  88 (rdi)
-+  movnti rax,  96 (rdi)
-+  movnti rax, 104 (rdi)
-+  movnti rax, 112 (rdi)
-+  movnti rax, 120 (rdi)
- 
-   leaq    128 (rdi), rdi
- 
---- a/newlib/libm/machine/i386/i386mach.h.orig	2008-07-11 15:30:37.367227000 +0100
-+++ b/newlib/libm/machine/i386/i386mach.h	2008-07-11 15:30:55.232337000 +0100
-@@ -27,46 +27,46 @@
-  
- #define REG(x) CONCAT1(__REG_PREFIX__, x)
-  
--#define eax REG(eax)
--#define ebx REG(ebx)
--#define ecx REG(ecx)
--#define edx REG(edx)
--#define esi REG(esi)
--#define edi REG(edi)
--#define ebp REG(ebp)
--#define esp REG(esp)
--
--#define st0 REG(st)
--#define st1 REG(st(1))
--#define st2 REG(st(2))
--#define st3 REG(st(3))
--#define st4 REG(st(4))
--#define st5 REG(st(5))
--#define st6 REG(st(6))
--#define st7 REG(st(7))
--
--#define ax REG(ax)
--#define bx REG(bx)
--#define cx REG(cx)
--#define dx REG(dx)
--
--#define ah REG(ah)
--#define bh REG(bh)
--#define ch REG(ch)
--#define dh REG(dh)
--
--#define al REG(al)
--#define bl REG(bl)
--#define cl REG(cl)
--#define dl REG(dl)
--
--#define mm1 REG(mm1)
--#define mm2 REG(mm2)
--#define mm3 REG(mm3)
--#define mm4 REG(mm4)
--#define mm5 REG(mm5)
--#define mm6 REG(mm6)
--#define mm7 REG(mm7)
-+#define eax %eax
-+#define ebx %ebx
-+#define ecx %ecx
-+#define edx %edx
-+#define esi %esi
-+#define edi %edi
-+#define ebp %ebp
-+#define esp %esp
-+
-+#define st0 %st
-+#define st1 %st(1)
-+#define st2 %st(2)
-+#define st3 %st(3)
-+#define st4 %st(4)
-+#define st5 %st(5)
-+#define st6 %st(6)
-+#define st7 %st(7)
-+
-+#define ax %ax
-+#define bx %bx
-+#define cx %cx
-+#define dx %dx
-+
-+#define ah %ah
-+#define bh %bh
-+#define ch %ch
-+#define dh %dh
-+
-+#define al %al
-+#define bl %bl
-+#define cl %cl
-+#define dl %dl
-+
-+#define mm1 %mm1
-+#define mm2 %mm2
-+#define mm3 %mm3
-+#define mm4 %mm4
-+#define mm5 %mm5
-+#define mm6 %mm6
-+#define mm7 %mm7
- 
- #ifdef _I386MACH_NEED_SOTYPE_FUNCTION
- #define SOTYPE_FUNCTION(sym) .type SYM(sym),@function
-
-
-We want to have a 64bit offsets libc even on 32bit platforms.
-
---- ./newlib/configure.host.orig	2008-08-07 16:01:17.801946000 +0100
-+++ ./newlib/configure.host	2008-08-07 16:01:34.181064000 +0100
-@@ -317,6 +317,8 @@
-     oext=lo
-     lpfx=
-     aext=la ;;
-+  i[34567]86-xen-elf)
-+    stdio64_dir=stdio64 ;;
-   *) ;; #shared library not supported for ${host}
- esac
- 
---- a/newlib/libc/include/sys/_types.h.orig	2008-08-07 15:22:44.925008000 +0100
-+++ b/newlib/libc/include/sys/_types.h	2008-08-07 15:22:50.824044000 +0100
-@@ -13,8 +13,12 @@
- #include <sys/lock.h>
- 
- #ifndef __off_t_defined
-+#ifdef __MINIOS__
-+typedef long long _off_t;
-+#else
- typedef long _off_t;
- #endif
-+#endif
- 
- #if defined(__rtems__)
- /* device numbers are 32-bit major and and 32-bit minor */
---- ./newlib/libc/include/sys/config.h.orig	2008-08-07 14:43:25.915866000 +0100
-+++ ./newlib/libc/include/sys/config.h	2008-08-07 14:44:13.508154000 +0100
-@@ -69,6 +69,10 @@
- /* we use some glibc header files so turn on glibc large file feature */
- #define _LARGEFILE64_SOURCE 1
- #endif
-+#ifdef __MINIOS__
-+#define __LARGE64_FILES 1
-+#define _LARGEFILE64_SOURCE 1
-+#endif
- #endif
- 
- #ifndef __DYNAMIC_REENT__
---- ./newlib/libc/include/sys/_default_fcntl.h.orig	2008-08-07 15:08:22.377836000 +0100
-+++ ./newlib/libc/include/sys/_default_fcntl.h	2008-08-07 15:08:31.651890000 +0100
-@@ -170,7 +170,11 @@
- /* Provide _<systemcall> prototypes for functions provided by some versions
-    of newlib.  */
- #ifdef _COMPILING_NEWLIB
--extern int _open _PARAMS ((const char *, int, ...));
-+extern int _open _PARAMS ((const char *, int, ...))
-+#ifdef __MINIOS__
-+    asm("open64")
-+#endif
-+    ;
- extern int _fcntl _PARAMS ((int, int, ...));
- #ifdef __LARGE64_FILES
- extern int _open64 _PARAMS ((const char *, int, ...));
---- ./newlib/libc/include/sys/unistd.h.orig	2008-08-07 15:09:36.449280000 +0100
-+++ ./newlib/libc/include/sys/unistd.h	2008-08-07 15:09:51.210370000 +0100
-@@ -101,7 +101,11 @@
- int     _EXFUN(link, (const char *__path1, const char *__path2 ));
- int	_EXFUN(nice, (int __nice_value ));
- #if !defined(__INSIDE_CYGWIN__)
--off_t   _EXFUN(lseek, (int __fildes, off_t __offset, int __whence ));
-+off_t   _EXFUN(lseek, (int __fildes, off_t __offset, int __whence ))
-+#ifdef __MINIOS__
-+    asm("lseek64")
-+#endif
-+    ;
- #endif
- #if defined(__SPU__)
- #define F_ULOCK	0
---- ./newlib/libc/include/sys/stat.h.orig	2008-08-07 16:08:50.495116000 +0100
-+++ ./newlib/libc/include/sys/stat.h	2008-08-07 16:10:21.799753000 +0100
-@@ -49,6 +49,9 @@
-   long	st_spare4[2];
- #endif
- };
-+#ifdef __MINIOS__
-+#define stat64 stat
-+#endif
- #endif
- 
- #define	_IFMT		0170000	/* type of file */
-@@ -132,7 +135,11 @@
- /* Provide prototypes for most of the _<systemcall> names that are
-    provided in newlib for some compilers.  */
- #ifdef _COMPILING_NEWLIB
--int	_EXFUN(_fstat,( int __fd, struct stat *__sbuf ));
-+int	_EXFUN(_fstat,( int __fd, struct stat *__sbuf ))
-+#ifdef __MINIOS__
-+    asm("fstat64")
-+#endif
-+    ;
- int	_EXFUN(_stat,( const char *__path, struct stat *__sbuf ));
- #ifdef __LARGE64_FILES
- struct stat64;
---- ./newlib/libc/include/_syslist.h.orig	2008-08-07 16:24:19.122605000 +0100
-+++ ./newlib/libc/include/_syslist.h	2008-08-07 16:24:21.548628000 +0100
-@@ -14,6 +14,7 @@
- #define _kill kill
- #define _link link
- #define _lseek lseek
-+#define _lseek64 lseek64
- #define _open open
- #define _read read
- #define _sbrk sbrk
---- a/newlib/libc/include/reent.h.orig	2008-08-07 16:28:49.846502000 +0100
-+++ b/newlib/libc/include/reent.h	2008-08-07 16:29:02.096586000 +0100
-@@ -87,6 +87,9 @@
- #if defined(__CYGWIN__) && defined(_COMPILING_NEWLIB)
- #define stat64 __stat64
- #endif
-+#if defined(__MINIOS__)
-+#define stat64 stat
-+#endif
- 
- struct stat64;
- 
diff --git a/import-layers/meta-virtualization/recipes-extended/xen/files/polarssl.patch b/import-layers/meta-virtualization/recipes-extended/xen/files/polarssl.patch
deleted file mode 100644
index 9548730..0000000
--- a/import-layers/meta-virtualization/recipes-extended/xen/files/polarssl.patch
+++ /dev/null
@@ -1,64 +0,0 @@
-diff -Naur polarssl-1.1.4/include/polarssl/config.h polarssl-x86_64/include/polarssl/config.h
---- a/include/polarssl/config.h	2011-12-22 05:06:27.000000000 -0500
-+++ b/include/polarssl/config.h	2012-10-30 17:18:07.567001000 -0400
-@@ -164,8 +164,8 @@
-  * application.
-  *
-  * Uncomment this macro to prevent loading of default entropy functions.
--#define POLARSSL_NO_DEFAULT_ENTROPY_SOURCES
-  */
-+#define POLARSSL_NO_DEFAULT_ENTROPY_SOURCES
-
- /**
-  * \def POLARSSL_NO_PLATFORM_ENTROPY
-@@ -175,8 +175,8 @@
-  * standards like the /dev/urandom or Windows CryptoAPI.
-  *
-  * Uncomment this macro to disable the built-in platform entropy functions.
--#define POLARSSL_NO_PLATFORM_ENTROPY
-  */
-+#define POLARSSL_NO_PLATFORM_ENTROPY
-
- /**
-  * \def POLARSSL_PKCS1_V21
-@@ -426,8 +426,8 @@
-  * Requires: POLARSSL_TIMING_C
-  *
-  * This module enables the HAVEGE random number generator.
-- */
- #define POLARSSL_HAVEGE_C
-+ */
-
- /**
-  * \def POLARSSL_MD_C
-@@ -490,7 +490,7 @@
-  *
-  * This module provides TCP/IP networking routines.
-  */
--#define POLARSSL_NET_C
-+//#define POLARSSL_NET_C
-
- /**
-  * \def POLARSSL_PADLOCK_C
-@@ -644,8 +644,8 @@
-  * Caller:  library/havege.c
-  *
-  * This module is used by the HAVEGE random number generator.
-- */
- #define POLARSSL_TIMING_C
-+ */
-
- /**
-  * \def POLARSSL_VERSION_C
-diff -Naur polarssl-1.1.4/library/bignum.c polarssl-x86_64/library/bignum.c
---- a/library/bignum.c	2012-04-29 16:15:55.000000000 -0400
-+++ b/library/bignum.c	2012-10-30 17:21:52.135000999 -0400
-@@ -1101,7 +1101,7 @@
-             Z.p[i - t - 1] = ~0;
-         else
-         {
--#if defined(POLARSSL_HAVE_LONGLONG)
-+#if 0 //defined(POLARSSL_HAVE_LONGLONG)
-             t_udbl r;
-
-             r  = (t_udbl) X.p[i] << biL;
diff --git a/import-layers/meta-virtualization/recipes-extended/xen/files/tpmemu-0.7.4.patch b/import-layers/meta-virtualization/recipes-extended/xen/files/tpmemu-0.7.4.patch
deleted file mode 100644
index 622b34f..0000000
--- a/import-layers/meta-virtualization/recipes-extended/xen/files/tpmemu-0.7.4.patch
+++ /dev/null
@@ -1,12 +0,0 @@
-diff -Naur tpm_emulator-x86_64-back/tpm/tpm_emulator_extern.c tpm_emulator-x86_64/tpm/tpm_emulator_extern.c
---- a/tpm/tpm_emulator_extern.c	2012-04-27 10:55:46.581963398 -0400
-+++ b/tpm/tpm_emulator_extern.c	2012-04-27 10:56:02.193034152 -0400
-@@ -249,7 +249,7 @@
- #else /* TPM_NO_EXTERN */
-
- int (*tpm_extern_init)(void)                                      = NULL;
--int (*tpm_extern_release)(void)                                   = NULL;
-+void (*tpm_extern_release)(void)                                   = NULL;
- void* (*tpm_malloc)(size_t size)                                  = NULL;
- void (*tpm_free)(/*const*/ void *ptr)                             = NULL;
- void (*tpm_log)(int priority, const char *fmt, ...)               = NULL;
diff --git a/import-layers/meta-virtualization/recipes-extended/xen/files/vtpm-bufsize.patch b/import-layers/meta-virtualization/recipes-extended/xen/files/vtpm-bufsize.patch
deleted file mode 100644
index 9c9304c..0000000
--- a/import-layers/meta-virtualization/recipes-extended/xen/files/vtpm-bufsize.patch
+++ /dev/null
@@ -1,13 +0,0 @@
-diff --git a/config.h.in b/config.h.in
-index d16a997..8088a2a 100644
---- a/config.h.in
-+++ b/config.h.in
-@@ -27,7 +27,7 @@
- #define TPM_STORAGE_NAME "${TPM_STORAGE_NAME}"
- #define TPM_DEVICE_NAME  "${TPM_DEVICE_NAME}"
- #define TPM_LOG_FILE     "${TPM_LOG_FILE}"
--#define TPM_CMD_BUF_SIZE 4096
-+#define TPM_CMD_BUF_SIZE 4088
- 
- #endif /* _CONFIG_H_ */
- 
diff --git a/import-layers/meta-virtualization/recipes-extended/xen/files/vtpm-cmake-Wextra.patch b/import-layers/meta-virtualization/recipes-extended/xen/files/vtpm-cmake-Wextra.patch
deleted file mode 100644
index 5fee4e9..0000000
--- a/import-layers/meta-virtualization/recipes-extended/xen/files/vtpm-cmake-Wextra.patch
+++ /dev/null
@@ -1,21 +0,0 @@
----
- CMakeLists.txt |    3 ++-
- 1 file changed, 2 insertions(+), 1 deletion(-)
-
-Index: tpm_emulator-x86_64/CMakeLists.txt
-===================================================================
---- a/CMakeLists.txt
-+++ b/CMakeLists.txt
-@@ -40,10 +40,11 @@ set(TPM_STORAGE_NAME "/var/lib/tpm/tpm_e
- set(TPM_DEVICE_NAME "/dev/tpm")
- endif()
- configure_file(${CMAKE_CURRENT_SOURCE_DIR}/config.h.in ${CMAKE_CURRENT_BINARY_DIR}/config.h)
--add_definitions(-Wall -Werror -Wno-unused-parameter -Wpointer-arith -Wcast-align -Wwrite-strings)
-+add_definitions(-Wall -Werror)
- if("${CMAKE_SYSTEM}" MATCHES "Linux")
-     add_definitions(-Wextra)
- endif()
-+add_definitions(-Wno-unused-parameter -Wpointer-arith -Wcast-align -Wwrite-strings)
- if(USE_OPENSSL)
-     add_definitions(-DUSE_OPENSSL)
- endif()
diff --git a/import-layers/meta-virtualization/recipes-extended/xen/files/vtpm-deepquote-anyloc.patch b/import-layers/meta-virtualization/recipes-extended/xen/files/vtpm-deepquote-anyloc.patch
deleted file mode 100644
index 7b37d51..0000000
--- a/import-layers/meta-virtualization/recipes-extended/xen/files/vtpm-deepquote-anyloc.patch
+++ /dev/null
@@ -1,127 +0,0 @@
-diff --git a/tpm/tpm_cmd_handler.c b/tpm/tpm_cmd_handler.c
-index 69511d1..7545d51 100644
---- a/tpm/tpm_cmd_handler.c
-+++ b/tpm/tpm_cmd_handler.c
-@@ -3347,12 +3347,13 @@ static TPM_RESULT execute_TPM_DeepQuote(TPM_REQUEST *req, TPM_RESPONSE *rsp)
- {
- 	TPM_NONCE nonce;
- 	TPM_RESULT res;
--	UINT32 sigSize;
--	BYTE *sig;
-+	UINT32 quote_blob_size;
-+	BYTE *quote_blob;
- 	BYTE *ptr;
- 	UINT32 len;
- 	TPM_PCR_SELECTION myPCR;
- 	TPM_PCR_SELECTION ptPCR;
-+	UINT32 extraInfoFlags = 0;
- 
- 	tpm_compute_in_param_digest(req);
- 
-@@ -3361,17 +3362,19 @@ static TPM_RESULT execute_TPM_DeepQuote(TPM_REQUEST *req, TPM_RESPONSE *rsp)
- 	if (tpm_unmarshal_TPM_NONCE(&ptr, &len, &nonce)
- 		|| tpm_unmarshal_TPM_PCR_SELECTION(&ptr, &len, &myPCR)
- 		|| tpm_unmarshal_TPM_PCR_SELECTION(&ptr, &len, &ptPCR)
-+		|| tpm_unmarshal_TPM_DEEP_QUOTE_INFO(&ptr, &len, &extraInfoFlags)
- 		|| len != 0) return TPM_BAD_PARAMETER;
- 
--	res = TPM_DeepQuote(&nonce, &myPCR, &ptPCR, &req->auth1, &sigSize, &sig);
-+	res = TPM_DeepQuote(&nonce, &myPCR, &ptPCR, &req->auth1, extraInfoFlags,
-+		&quote_blob_size, &quote_blob);
- 	if (res != TPM_SUCCESS) return res;
--	rsp->paramSize = len = sigSize;
-+	rsp->paramSize = len = quote_blob_size;
- 	rsp->param = ptr = tpm_malloc(len);
--	if (ptr == NULL || tpm_marshal_BLOB(&ptr, &len, sig, sigSize)) {
-+	if (ptr == NULL || tpm_marshal_BLOB(&ptr, &len, quote_blob, quote_blob_size)) {
- 		tpm_free(rsp->param);
- 		res = TPM_FAIL;
- 	}
--	tpm_free(sig);
-+	tpm_free(quote_blob);
- 
- 	return res;
- }
-diff --git a/tpm/tpm_commands.h b/tpm/tpm_commands.h
-index 328d1be..a56dd5f 100644
---- a/tpm/tpm_commands.h
-+++ b/tpm/tpm_commands.h
-@@ -3077,6 +3077,7 @@ TPM_RESULT TPM_ParentSignEK(
-  * @myPCR: [in] PCR selection for the virtual TPM
-  * @ptPCR: [in] PCR selection for the hardware TPM
-  * @auth1: [in, out] Authorization protocol parameters
-+ * @extraInfoFlags [in] Flags for including, kernel hash, group info, etc
-  * @sigSize: [out] The length of the returned digital signature
-  * @sig: [out] The resulting digital signature and PCR values
-  * Returns: TPM_SUCCESS on success, a TPM error code otherwise.
-@@ -3086,6 +3087,7 @@ TPM_RESULT TPM_DeepQuote(
-   TPM_PCR_SELECTION *myPCR,
-   TPM_PCR_SELECTION *ptPCR,
-   TPM_AUTH *auth1,
-+  UINT32 extraInfoFlags,
-   UINT32 *sigSize,
-   BYTE **sig
- );
-diff --git a/tpm/tpm_credentials.c b/tpm/tpm_credentials.c
-index c0d62e7..6586c22 100644
---- a/tpm/tpm_credentials.c
-+++ b/tpm/tpm_credentials.c
-@@ -183,7 +183,8 @@ TPM_RESULT TPM_OwnerReadInternalPub(TPM_KEY_HANDLE keyHandle, TPM_AUTH *auth1,
- 
- int endorsementKeyFresh = 0;
- 
--TPM_RESULT VTPM_GetParentQuote(TPM_DIGEST* data, TPM_PCR_SELECTION *sel, UINT32 *sigSize, BYTE **sig);
-+TPM_RESULT VTPM_GetParentQuote(TPM_NONCE *data, TPM_PCR_SELECTION *sel,
-+                               UINT32 extraInfoFlags, UINT32 *sigSize, BYTE **sig);
- 
- TPM_RESULT TPM_ParentSignEK(TPM_NONCE *externalData, TPM_PCR_SELECTION *sel,
-                             TPM_AUTH *auth1, UINT32 *sigSize, BYTE **sig)
-@@ -191,7 +192,7 @@ TPM_RESULT TPM_ParentSignEK(TPM_NONCE *externalData, TPM_PCR_SELECTION *sel,
- 	TPM_PUBKEY pubKey;
- 	TPM_RESULT res;
- 	TPM_DIGEST hres;
--
-+	UINT32 extraInfoFlags = 0;
- 	info("TPM_ParentSignEK()");
- 
- 	res = tpm_verify_auth(auth1, tpmData.permanent.data.ownerAuth, TPM_KH_OWNER);
-@@ -206,7 +207,7 @@ TPM_RESULT TPM_ParentSignEK(TPM_NONCE *externalData, TPM_PCR_SELECTION *sel,
- 		res = TPM_FAIL;
- 
- 	if (res == TPM_SUCCESS)
--		res = VTPM_GetParentQuote(&hres, sel, sigSize, sig);
-+		res = VTPM_GetParentQuote((TPM_NONCE*)&hres, sel, extraInfoFlags, sigSize, sig);
- 
- 	free_TPM_PUBKEY(pubKey);
- 	return res;
-@@ -218,7 +219,7 @@ static const BYTE dquot_hdr[] = {
- 
- TPM_RESULT TPM_DeepQuote(TPM_NONCE *externalData, TPM_PCR_SELECTION *myPCR,
-                          TPM_PCR_SELECTION *ptPCR, TPM_AUTH *auth1,
--                         UINT32 *sigSize, BYTE **sig)
-+                         UINT32 extraInfoFlags, UINT32 *quote_blob_size, BYTE **quote_blob)
- {
-   TPM_RESULT res;
-   TPM_DIGEST hres;
-@@ -253,7 +254,7 @@ TPM_RESULT TPM_DeepQuote(TPM_NONCE *externalData, TPM_PCR_SELECTION *myPCR,
- 
-   tpm_free(buf);
- 
--	res = VTPM_GetParentQuote(&hres, ptPCR, sigSize, sig);
-+  res = VTPM_GetParentQuote((TPM_NONCE*)&hres, ptPCR, extraInfoFlags, quote_blob_size, quote_blob);
- 
-   return res;
- }
-diff --git a/tpm/tpm_marshalling.h b/tpm/tpm_marshalling.h
-index d510ebe..2e0c008 100644
---- a/tpm/tpm_marshalling.h
-+++ b/tpm/tpm_marshalling.h
-@@ -268,6 +268,8 @@ static inline int tpm_unmarshal_BOOL(BYTE **ptr, UINT32 *length, BOOL *v)
- #define tpm_unmarshal_TPM_REDIR_COMMAND        tpm_unmarshal_UINT32
- #define tpm_marshal_DAAHANDLE                  tpm_marshal_UINT32
- #define tpm_unmarshal_DAAHANDLE                tpm_unmarshal_UINT32
-+#define tpm_marshal_TPM_DEEP_QUOTE_INFO        tpm_marshal_UINT32
-+#define tpm_unmarshal_TPM_DEEP_QUOTE_INFO      tpm_unmarshal_UINT32
- 
- int tpm_marshal_UINT32_ARRAY(BYTE **ptr, UINT32 *length, UINT32 *v, UINT32 n);
- int tpm_unmarshal_UINT32_ARRAY(BYTE **ptr, UINT32 *length, UINT32 *v, UINT32 n);
diff --git a/import-layers/meta-virtualization/recipes-extended/xen/files/vtpm-deepquote.patch b/import-layers/meta-virtualization/recipes-extended/xen/files/vtpm-deepquote.patch
deleted file mode 100644
index 6344f38..0000000
--- a/import-layers/meta-virtualization/recipes-extended/xen/files/vtpm-deepquote.patch
+++ /dev/null
@@ -1,187 +0,0 @@
-diff --git a/tpm/tpm_cmd_handler.c b/tpm/tpm_cmd_handler.c
-index 0fabf98..69511d1 100644
---- a/tpm/tpm_cmd_handler.c
-+++ b/tpm/tpm_cmd_handler.c
-@@ -3343,6 +3343,39 @@ static TPM_RESULT execute_TPM_ParentSignEK(TPM_REQUEST *req, TPM_RESPONSE *rsp)
- 	return res;
- }
- 
-+static TPM_RESULT execute_TPM_DeepQuote(TPM_REQUEST *req, TPM_RESPONSE *rsp)
-+{
-+	TPM_NONCE nonce;
-+	TPM_RESULT res;
-+	UINT32 sigSize;
-+	BYTE *sig;
-+	BYTE *ptr;
-+	UINT32 len;
-+	TPM_PCR_SELECTION myPCR;
-+	TPM_PCR_SELECTION ptPCR;
-+
-+	tpm_compute_in_param_digest(req);
-+
-+	ptr = req->param;
-+	len = req->paramSize;
-+	if (tpm_unmarshal_TPM_NONCE(&ptr, &len, &nonce)
-+		|| tpm_unmarshal_TPM_PCR_SELECTION(&ptr, &len, &myPCR)
-+		|| tpm_unmarshal_TPM_PCR_SELECTION(&ptr, &len, &ptPCR)
-+		|| len != 0) return TPM_BAD_PARAMETER;
-+
-+	res = TPM_DeepQuote(&nonce, &myPCR, &ptPCR, &req->auth1, &sigSize, &sig);
-+	if (res != TPM_SUCCESS) return res;
-+	rsp->paramSize = len = sigSize;
-+	rsp->param = ptr = tpm_malloc(len);
-+	if (ptr == NULL || tpm_marshal_BLOB(&ptr, &len, sig, sigSize)) {
-+		tpm_free(rsp->param);
-+		res = TPM_FAIL;
-+	}
-+	tpm_free(sig);
-+
-+	return res;
-+}
-+
- static void tpm_setup_rsp_auth(TPM_COMMAND_CODE ordinal, TPM_RESPONSE *rsp) 
- {
-   tpm_hmac_ctx_t hmac;
-@@ -4098,6 +4131,11 @@ void tpm_execute_command(TPM_REQUEST *req, TPM_RESPONSE *rsp)
-       res = execute_TPM_ParentSignEK(req, rsp);
-     break;
- 
-+    case TPM_ORD_DeepQuote:
-+      debug("[TPM_ORD_DeepQuote]");
-+      res = execute_TPM_DeepQuote(req, rsp);
-+    break;
-+
-     default:
- #ifdef MTM_EMULATOR
-       res = mtm_execute_command(req, rsp);
-diff --git a/tpm/tpm_commands.h b/tpm/tpm_commands.h
-index 7fef934..328d1be 100644
---- a/tpm/tpm_commands.h
-+++ b/tpm/tpm_commands.h
-@@ -3071,6 +3071,25 @@ TPM_RESULT TPM_ParentSignEK(
-   BYTE **sig
- );
- 
-+/**
-+ * TPM_DeepQuote - gets a hardware TPM quote of a vTPM's PCRs
-+ * @externalData: [in] AntiReplay nonce to prevent replay of messages
-+ * @myPCR: [in] PCR selection for the virtual TPM
-+ * @ptPCR: [in] PCR selection for the hardware TPM
-+ * @auth1: [in, out] Authorization protocol parameters
-+ * @sigSize: [out] The length of the returned digital signature
-+ * @sig: [out] The resulting digital signature and PCR values
-+ * Returns: TPM_SUCCESS on success, a TPM error code otherwise.
-+ */
-+TPM_RESULT TPM_DeepQuote(
-+  TPM_NONCE *externalData,
-+  TPM_PCR_SELECTION *myPCR,
-+  TPM_PCR_SELECTION *ptPCR,
-+  TPM_AUTH *auth1,
-+  UINT32 *sigSize,
-+  BYTE **sig
-+);
-+
- /*
-  * Error handling
-  * [tpm_error.c]
-diff --git a/tpm/tpm_credentials.c b/tpm/tpm_credentials.c
-index 01f29e6..c0d62e7 100644
---- a/tpm/tpm_credentials.c
-+++ b/tpm/tpm_credentials.c
-@@ -211,3 +211,49 @@ TPM_RESULT TPM_ParentSignEK(TPM_NONCE *externalData, TPM_PCR_SELECTION *sel,
- 	free_TPM_PUBKEY(pubKey);
- 	return res;
- }
-+
-+static const BYTE dquot_hdr[] = {
-+	0, 0, 0, 0, 'D', 'Q', 'U', 'T'
-+};
-+
-+TPM_RESULT TPM_DeepQuote(TPM_NONCE *externalData, TPM_PCR_SELECTION *myPCR,
-+                         TPM_PCR_SELECTION *ptPCR, TPM_AUTH *auth1,
-+                         UINT32 *sigSize, BYTE **sig)
-+{
-+	TPM_RESULT res;
-+	TPM_DIGEST hres;
-+	TPM_PCR_INFO_SHORT pcrData;
-+	tpm_sha1_ctx_t ctx;
-+	BYTE *buf, *ptr;
-+	UINT32 size, len;
-+
-+	info("TPM_DeepQuote()");
-+
-+	res = tpm_verify_auth(auth1, tpmData.permanent.data.ownerAuth, TPM_KH_OWNER);
-+	if (res != TPM_SUCCESS) return res;
-+
-+	res = tpm_compute_pcr_digest(myPCR, &pcrData.digestAtRelease, NULL);
-+	if (res != TPM_SUCCESS) return res;
-+
-+	pcrData.pcrSelection.sizeOfSelect = myPCR->sizeOfSelect;
-+	memcpy(pcrData.pcrSelection.pcrSelect, myPCR->pcrSelect, myPCR->sizeOfSelect);
-+	pcrData.localityAtRelease = 1 << tpmData.stany.flags.localityModifier;
-+
-+	size = len = sizeof_TPM_PCR_INFO_SHORT(pcrData);
-+	buf = ptr = tpm_malloc(size);
-+	if (buf == NULL) return TPM_NOSPACE;
-+	if (tpm_marshal_TPM_PCR_INFO_SHORT(&ptr, &len, &pcrData))
-+		return TPM_FAIL;
-+
-+	tpm_sha1_init(&ctx);
-+	tpm_sha1_update(&ctx, dquot_hdr, 8);
-+	tpm_sha1_update(&ctx, externalData->nonce, 20);
-+	tpm_sha1_update(&ctx, buf, size);
-+	tpm_sha1_final(&ctx, hres.digest);
-+
-+	tpm_free(buf);
-+
-+	res = VTPM_GetParentQuote(&hres, ptPCR, sigSize, sig);
-+
-+	return res;
-+}
-diff --git a/tpm/tpm_structures.h b/tpm/tpm_structures.h
-index b0f4625..dfb1894 100644
---- a/tpm/tpm_structures.h
-+++ b/tpm/tpm_structures.h
-@@ -660,6 +660,42 @@ typedef struct tdTPM_CMK_MA_APPROVAL {
- 
- /* VTPM-only commands: */
- /*
-+ * Deep Quote - Create quote of PCRs
-+ * Input:
-+ *   TPM_TAG             tag           TPM_TAG_RQU_AUTH1_COMMAND
-+ *   UINT32              paramSize     Total size of request
-+ *   TPM_COMMAND_CODE    ordinal       TPM_ORD_DeepQuote
-+ *   TPM_NONCE           externData    20 bytes of external data
-+ *   TPM_PCR_SELECTION   vtSel         PCR selection for virtual TPM
-+ *   TPM_PCR_SELECTION   ptSel         PCR selection for physical TPM
-+ *   ---
-+ *   UINT32              authHandle    Owner authorization session (OIAP)
-+ *   TPM_NONCE           nonceOdd      Nonce for authHandle
-+ *   BOOL                continueAuth  Continue flag for authHandle
-+ *   TPM_AUTHDATA        privAuth      Authorization digest for command
-+ *
-+ * Output:
-+ *   TPM_TAG             tag           TPM_TAG_RSP_AUTH1_COMMAND
-+ *   UINT32              paramSize     Total size of response
-+ *   TPM_RESULT          returnCode    Return code of the operation
-+ *   BYTE[]              sig           Signature provided by physical TPM
-+ *   TPM_PCRVALUE[]      pcrValue      Values of hardware PCRs used in the quote
-+ *   ---
-+ *   TPM_NONCE           nonceEven     Nonce for authHandle
-+ *   BOOL                continueAuth  Continue flag for authHandle
-+ *   TPM_AUTHDATA        resAuth       Authorization digest for response
-+ *
-+ * The values of the virutal TPM's PCRs are not included in the response.
-+ * The signature is a standard TPM_Quote response from the physical TPM; its
-+ * externalData is the SHA1 hash of the following structure:
-+ *   TPM_STRUCT_VER      version       MUST be 0.0.0.0
-+ *   BYTE[4]             fixed         MUST be the string "DQUT"
-+ *   TPM_NONCE           externData    From input to the deep quote
-+ *   TPM_PCR_INFO_SHORT  pcrData       Virtual TPM's PCRs
-+ */
-+#define TPM_ORD_DeepQuote                       (TPM_VENDOR_COMMAND | TPM_ORD_Quote)
-+
-+/*
-  * ParentSignEK - Proof of fresh provisioning and EK value
-  *
-  * Input:
diff --git a/import-layers/meta-virtualization/recipes-extended/xen/files/vtpm-implicit-fallthrough.patch b/import-layers/meta-virtualization/recipes-extended/xen/files/vtpm-implicit-fallthrough.patch
deleted file mode 100644
index e95d41f..0000000
--- a/import-layers/meta-virtualization/recipes-extended/xen/files/vtpm-implicit-fallthrough.patch
+++ /dev/null
@@ -1,10 +0,0 @@
---- a/tpm/tpm_cmd_handler.c.orig	2017-04-27 13:37:14.408000000 +0200
-+++ b/tpm/tpm_cmd_handler.c	2017-04-27 13:39:53.585000000 +0200
-@@ -3397,6 +3397,7 @@
-                   sizeof(rsp->auth2->nonceOdd.nonce));
-       tpm_hmac_update(&hmac, (BYTE*)&rsp->auth2->continueAuthSession, 1);
-       tpm_hmac_final(&hmac, rsp->auth2->auth);
-+      /* fall-thru */
-     case TPM_TAG_RSP_AUTH1_COMMAND:
-       tpm_hmac_init(&hmac, rsp->auth1->secret, sizeof(rsp->auth1->secret));
-       tpm_hmac_update(&hmac, rsp->auth1->digest, sizeof(rsp->auth1->digest));
diff --git a/import-layers/meta-virtualization/recipes-extended/xen/files/vtpm-locality.patch b/import-layers/meta-virtualization/recipes-extended/xen/files/vtpm-locality.patch
deleted file mode 100644
index 8ab7dea..0000000
--- a/import-layers/meta-virtualization/recipes-extended/xen/files/vtpm-locality.patch
+++ /dev/null
@@ -1,50 +0,0 @@
-diff --git a/tpm/tpm_capability.c b/tpm/tpm_capability.c
-index 60bbb90..f8f7f0f 100644
---- a/tpm/tpm_capability.c
-+++ b/tpm/tpm_capability.c
-@@ -949,6 +949,8 @@ static TPM_RESULT set_vendor(UINT32 subCap, BYTE *setValue,
-                              UINT32 setValueSize, BOOL ownerAuth,
-                              BOOL deactivated, BOOL disabled)
- {
-+  if (tpmData.stany.flags.localityModifier != 8)
-+    return TPM_BAD_PARAMETER;
-   /* set the capability area with the specified data, on failure
-      deactivate the TPM */
-   switch (subCap) {
-diff --git a/tpm/tpm_cmd_handler.c b/tpm/tpm_cmd_handler.c
-index 288d1ce..9e1cfb4 100644
---- a/tpm/tpm_cmd_handler.c
-+++ b/tpm/tpm_cmd_handler.c
-@@ -4132,7 +4132,7 @@ void tpm_emulator_shutdown()
-   tpm_extern_release();
- }
- 
--int tpm_handle_command(const uint8_t *in, uint32_t in_size, uint8_t **out, uint32_t *out_size)
-+int tpm_handle_command(const uint8_t *in, uint32_t in_size, uint8_t **out, uint32_t *out_size, int locality)
- {
-   TPM_REQUEST req;
-   TPM_RESPONSE rsp;
-@@ -4140,7 +4140,9 @@ int tpm_handle_command(const uint8_t *in, uint32_t in_size, uint8_t **out, uint3
-   UINT32 len;
-   BOOL free_out;
- 
--  debug("tpm_handle_command()");
-+  debug("tpm_handle_command(%d)", locality);
-+  if (locality != -1)
-+    tpmData.stany.flags.localityModifier = locality;
- 
-   /* we need the whole packet at once, otherwise unmarshalling will fail */
-   if (tpm_unmarshal_TPM_REQUEST((uint8_t**)&in, &in_size, &req) != 0) {
-diff --git a/tpm/tpm_emulator.h b/tpm/tpm_emulator.h
-index eed749e..4c228bd 100644
---- a/tpm/tpm_emulator.h
-+++ b/tpm/tpm_emulator.h
-@@ -59,7 +59,7 @@ void tpm_emulator_shutdown(void);
-  * its usage. In case of an error, all internally allocated memory
-  * is released and the the state of out and out_size is unspecified.
-  */ 
--int tpm_handle_command(const uint8_t *in, uint32_t in_size, uint8_t **out, uint32_t *out_size);
-+int tpm_handle_command(const uint8_t *in, uint32_t in_size, uint8_t **out, uint32_t *out_size, int locality);
- 
- #endif /* _TPM_EMULATOR_H_ */
- 
diff --git a/import-layers/meta-virtualization/recipes-extended/xen/files/vtpm-parent-sign-ek.patch b/import-layers/meta-virtualization/recipes-extended/xen/files/vtpm-parent-sign-ek.patch
deleted file mode 100644
index 14e66ee..0000000
--- a/import-layers/meta-virtualization/recipes-extended/xen/files/vtpm-parent-sign-ek.patch
+++ /dev/null
@@ -1,196 +0,0 @@
-diff --git a/tpm/tpm_cmd_handler.c b/tpm/tpm_cmd_handler.c
-index 9e1cfb4..0fabf98 100644
---- a/tpm/tpm_cmd_handler.c
-+++ b/tpm/tpm_cmd_handler.c
-@@ -3312,6 +3312,37 @@ static TPM_RESULT execute_TPM_OwnerReadPubek(TPM_REQUEST *req, TPM_RESPONSE *rsp
-   return res;
- }
- 
-+static TPM_RESULT execute_TPM_ParentSignEK(TPM_REQUEST *req, TPM_RESPONSE *rsp)
-+{
-+	TPM_NONCE nonce;
-+	TPM_RESULT res;
-+	UINT32 sigSize;
-+	BYTE *sig;
-+	BYTE *ptr;
-+	UINT32 len;
-+	TPM_PCR_SELECTION targetPCR;
-+
-+	tpm_compute_in_param_digest(req);
-+
-+	ptr = req->param;
-+	len = req->paramSize;
-+	if (tpm_unmarshal_TPM_NONCE(&ptr, &len, &nonce)
-+		|| tpm_unmarshal_TPM_PCR_SELECTION(&ptr, &len, &targetPCR)
-+		|| len != 0) return TPM_BAD_PARAMETER;
-+
-+	res = TPM_ParentSignEK(&nonce, &targetPCR, &req->auth1, &sigSize, &sig);
-+	if (res != TPM_SUCCESS) return res;
-+	rsp->paramSize = len = sigSize;
-+	rsp->param = ptr = tpm_malloc(len);
-+	if (ptr == NULL || tpm_marshal_BLOB(&ptr, &len, sig, sigSize)) {
-+		tpm_free(rsp->param);
-+		res = TPM_FAIL;
-+	}
-+	tpm_free(sig);
-+
-+	return res;
-+}
-+
- static void tpm_setup_rsp_auth(TPM_COMMAND_CODE ordinal, TPM_RESPONSE *rsp) 
- {
-   tpm_hmac_ctx_t hmac;
-@@ -4062,6 +4093,11 @@ void tpm_execute_command(TPM_REQUEST *req, TPM_RESPONSE *rsp)
-       res = execute_TPM_OwnerReadPubek(req, rsp);
-     break;
- 
-+    case TPM_ORD_ParentSignEK:
-+      debug("[TPM_ORD_ParentSignEK]");
-+      res = execute_TPM_ParentSignEK(req, rsp);
-+    break;
-+
-     default:
- #ifdef MTM_EMULATOR
-       res = mtm_execute_command(req, rsp);
-diff --git a/tpm/tpm_commands.h b/tpm/tpm_commands.h
-index a7666f6..7fef934 100644
---- a/tpm/tpm_commands.h
-+++ b/tpm/tpm_commands.h
-@@ -3054,6 +3054,23 @@ TPM_RESULT TPM_OwnerReadPubek(
-   TPM_PUBKEY *pubEndorsementKey 
- );
- 
-+/**
-+ * TPM_ParentSignEK - gets a hardware TPM quote of a vTPM's EK
-+ * @externalData: [in] AntiReplay nonce to prevent replay of messages
-+ * @sel: [in] PCR selection for the hardware TPM's quote
-+ * @auth1: [in, out] Authorization protocol parameters
-+ * @sigSize: [out] The length of the returned digital signature
-+ * @sig: [out] The resulting digital signature and PCR values
-+ * Returns: TPM_SUCCESS on success, a TPM error code otherwise.
-+ */
-+TPM_RESULT TPM_ParentSignEK(
-+  TPM_NONCE *externalData,
-+  TPM_PCR_SELECTION *sel,
-+  TPM_AUTH *auth1,
-+  UINT32 *sigSize,
-+  BYTE **sig
-+);
-+
- /*
-  * Error handling
-  * [tpm_error.c]
-diff --git a/tpm/tpm_credentials.c b/tpm/tpm_credentials.c
-index 9cd64af..01f29e6 100644
---- a/tpm/tpm_credentials.c
-+++ b/tpm/tpm_credentials.c
-@@ -180,3 +180,34 @@ TPM_RESULT TPM_OwnerReadInternalPub(TPM_KEY_HANDLE keyHandle, TPM_AUTH *auth1,
-     return TPM_BAD_PARAMETER;
-   }
- }
-+
-+int endorsementKeyFresh = 0;
-+
-+TPM_RESULT VTPM_GetParentQuote(TPM_DIGEST* data, TPM_PCR_SELECTION *sel, UINT32 *sigSize, BYTE **sig);
-+
-+TPM_RESULT TPM_ParentSignEK(TPM_NONCE *externalData, TPM_PCR_SELECTION *sel,
-+                            TPM_AUTH *auth1, UINT32 *sigSize, BYTE **sig)
-+{
-+	TPM_PUBKEY pubKey;
-+	TPM_RESULT res;
-+	TPM_DIGEST hres;
-+
-+	info("TPM_ParentSignEK()");
-+
-+	res = tpm_verify_auth(auth1, tpmData.permanent.data.ownerAuth, TPM_KH_OWNER);
-+	if (res != TPM_SUCCESS) return res;
-+
-+	if (!endorsementKeyFresh) return TPM_DISABLED_CMD;
-+
-+	res = tpm_get_pubek(&pubKey);
-+	if (res != TPM_SUCCESS) return res;
-+
-+	if (tpm_compute_pubkey_checksum(externalData, &pubKey, &hres))
-+		res = TPM_FAIL;
-+
-+	if (res == TPM_SUCCESS)
-+		res = VTPM_GetParentQuote(&hres, sel, sigSize, sig);
-+
-+	free_TPM_PUBKEY(pubKey);
-+	return res;
-+}
-diff --git a/tpm/tpm_data.c b/tpm/tpm_data.c
-index 50c9697..6a0c499 100644
---- a/tpm/tpm_data.c
-+++ b/tpm/tpm_data.c
-@@ -76,6 +76,8 @@ static void init_timeouts(void)
-   tpmData.permanent.data.cmd_durations[2] = 1000;
- }
- 
-+extern int endorsementKeyFresh;
-+
- void tpm_init_data(void)
- {
-   /* endorsement key */
-@@ -157,6 +159,7 @@ void tpm_init_data(void)
-   if (tpmConf & TPM_CONF_GENERATE_EK) {
-     /* generate a new endorsement key */
-     tpm_rsa_generate_key(&tpmData.permanent.data.endorsementKey, 2048);
-+    endorsementKeyFresh = 1;
-   } else {
-     /* setup endorsement key */
-     tpm_rsa_import_key(&tpmData.permanent.data.endorsementKey, 
-diff --git a/tpm/tpm_structures.h b/tpm/tpm_structures.h
-index f746c05..b0f4625 100644
---- a/tpm/tpm_structures.h
-+++ b/tpm/tpm_structures.h
-@@ -658,6 +658,49 @@ typedef struct tdTPM_CMK_MA_APPROVAL {
- #define TPM_ORD_TickStampBlob                   242
- #define TPM_ORD_MAX                             256
- 
-+/* VTPM-only commands: */
-+/*
-+ * ParentSignEK - Proof of fresh provisioning and EK value
-+ *
-+ * Input:
-+ *   TPM_TAG             tag           TPM_TAG_RQU_AUTH1_COMMAND
-+ *   UINT32              paramSize     Total size of request
-+ *   TPM_COMMAND_CODE    ordinal       TPM_ORD_ParentSignEK
-+ *   TPM_NONCE           externData    20 bytes of external data
-+ *   TPM_PCR_SELECTION   ptSel         PCR selection for physical TPM
-+ *   ---
-+ *   UINT32              authHandle    Owner authorization session (OIAP)
-+ *   TPM_NONCE           nonceOdd      Nonce for authHandle
-+ *   BOOL                continueAuth  Continue flag for authHandle
-+ *   TPM_AUTHDATA        privAuth      Authorization digest for command
-+ *
-+ * Output:
-+ *   TPM_TAG             tag           TPM_TAG_RSP_AUTH1_COMMAND
-+ *   UINT32              paramSize     Total size of response
-+ *   TPM_RESULT          returnCode    Return code of the operation
-+ *   BYTE[]              sig           Signature provided by physical TPM
-+ *   TPM_PCRVALUE[]      pcrValue      Values of hardware PCRs used in the quote
-+ *   ---
-+ *   TPM_NONCE           nonceEven     Nonce for authHandle
-+ *   BOOL                continueAuth  Continue flag for authHandle
-+ *   TPM_AUTHDATA        resAuth       Authorization digest for response
-+ *
-+ * This command is only valid on the first boot of a vTPM; on any subsequent
-+ * boot, the command returns TPM_DISABLED_CMD. It is intended to be used to
-+ * provide evidence of proper platform configuration to the verifier/CA which is
-+ * responsible for the creation of the vTPM's endorsement credential, which will
-+ * be used on subsequent boots to certify AIKs via the usual Privacy CA protocol.
-+ *
-+ * The values of the virtual TPM's PCRs are not included in the response.
-+ * The signature is a standard TPM_Quote response from the physical TPM; its
-+ * externalData is the SHA1 hash of the following structure:
-+ *   TPM_PUBKEY          pubEK         The vTPM's public EK
-+ *   TPM_NONCE           externData    From input to the deep quote
-+ *
-+ * This structure was chosen to match the return of TPM_ReadPubek
-+ */
-+#define TPM_ORD_ParentSignEK                    (TPM_VENDOR_COMMAND | TPM_ORD_ReadPubek)
-+
- /*
-  * TCS Ordinals ([TPM_Part2], Section 17.1)
-  *
diff --git a/import-layers/meta-virtualization/recipes-extended/xen/files/xsa246-4.9.patch b/import-layers/meta-virtualization/recipes-extended/xen/files/xsa246-4.9.patch
deleted file mode 100644
index 6370a10..0000000
--- a/import-layers/meta-virtualization/recipes-extended/xen/files/xsa246-4.9.patch
+++ /dev/null
@@ -1,74 +0,0 @@
-From: Julien Grall <julien.grall@linaro.org>
-Subject: x86/pod: prevent infinite loop when shattering large pages
-
-When populating pages, the PoD may need to split large ones using
-p2m_set_entry and request the caller to retry (see ept_get_entry for
-instance).
-
-p2m_set_entry may fail to shatter if it is not possible to allocate
-memory for the new page table. However, the error is not propagated
-resulting to the callers to retry infinitely the PoD.
-
-Prevent the infinite loop by return false when it is not possible to
-shatter the large mapping.
-
-This is XSA-246.
-
-Signed-off-by: Julien Grall <julien.grall@linaro.org>
-Signed-off-by: Jan Beulich <jbeulich@suse.com>
-Reviewed-by: George Dunlap <george.dunlap@citrix.com>
-
---- a/xen/arch/x86/mm/p2m-pod.c
-+++ b/xen/arch/x86/mm/p2m-pod.c
-@@ -1071,9 +1071,8 @@ p2m_pod_demand_populate(struct p2m_domai
-          * NOTE: In a fine-grained p2m locking scenario this operation
-          * may need to promote its locking from gfn->1g superpage
-          */
--        p2m_set_entry(p2m, gfn_aligned, INVALID_MFN, PAGE_ORDER_2M,
--                      p2m_populate_on_demand, p2m->default_access);
--        return 0;
-+        return p2m_set_entry(p2m, gfn_aligned, INVALID_MFN, PAGE_ORDER_2M,
-+                             p2m_populate_on_demand, p2m->default_access);
-     }
- 
-     /* Only reclaim if we're in actual need of more cache. */
-@@ -1104,8 +1103,12 @@ p2m_pod_demand_populate(struct p2m_domai
- 
-     gfn_aligned = (gfn >> order) << order;
- 
--    p2m_set_entry(p2m, gfn_aligned, mfn, order, p2m_ram_rw,
--                  p2m->default_access);
-+    if ( p2m_set_entry(p2m, gfn_aligned, mfn, order, p2m_ram_rw,
-+                       p2m->default_access) )
-+    {
-+        p2m_pod_cache_add(p2m, p, order);
-+        goto out_fail;
-+    }
- 
-     for( i = 0; i < (1UL << order); i++ )
-     {
-@@ -1150,13 +1153,18 @@ remap_and_retry:
-     BUG_ON(order != PAGE_ORDER_2M);
-     pod_unlock(p2m);
- 
--    /* Remap this 2-meg region in singleton chunks */
--    /* NOTE: In a p2m fine-grained lock scenario this might
--     * need promoting the gfn lock from gfn->2M superpage */
-+    /*
-+     * Remap this 2-meg region in singleton chunks. See the comment on the
-+     * 1G page splitting path above for why a single call suffices.
-+     *
-+     * NOTE: In a p2m fine-grained lock scenario this might
-+     * need promoting the gfn lock from gfn->2M superpage.
-+     */
-     gfn_aligned = (gfn>>order)<<order;
--    for(i=0; i<(1<<order); i++)
--        p2m_set_entry(p2m, gfn_aligned + i, INVALID_MFN, PAGE_ORDER_4K,
--                      p2m_populate_on_demand, p2m->default_access);
-+    if ( p2m_set_entry(p2m, gfn_aligned, INVALID_MFN, PAGE_ORDER_4K,
-+                       p2m_populate_on_demand, p2m->default_access) )
-+        return -1;
-+
-     if ( tb_init_done )
-     {
-         struct {
diff --git a/import-layers/meta-virtualization/recipes-extended/xen/files/xsa248.patch b/import-layers/meta-virtualization/recipes-extended/xen/files/xsa248.patch
deleted file mode 100644
index 966c16e..0000000
--- a/import-layers/meta-virtualization/recipes-extended/xen/files/xsa248.patch
+++ /dev/null
@@ -1,164 +0,0 @@
-From: Jan Beulich <jbeulich@suse.com>
-Subject: x86/mm: don't wrongly set page ownership
-
-PV domains can obtain mappings of any pages owned by the correct domain,
-including ones that aren't actually assigned as "normal" RAM, but used
-by Xen internally.  At the moment such "internal" pages marked as owned
-by a guest include pages used to track logdirty bits, as well as p2m
-pages and the "unpaged pagetable" for HVM guests. Since the PV memory
-management and shadow code conflict in their use of struct page_info
-fields, and since shadow code is being used for log-dirty handling for
-PV domains, pages coming from the shadow pool must, for PV domains, not
-have the domain set as their owner.
-
-While the change could be done conditionally for just the PV case in
-shadow code, do it unconditionally (and for consistency also for HAP),
-just to be on the safe side.
-
-There's one special case though for shadow code: The page table used for
-running a HVM guest in unpaged mode is subject to get_page() (in
-set_shadow_status()) and hence must have its owner set.
-
-This is XSA-248.
-
-Signed-off-by: Jan Beulich <jbeulich@suse.com>
-Reviewed-by: Tim Deegan <tim@xen.org>
-Reviewed-by: George Dunlap <george.dunlap@citrix.com>
----
-v2: Drop PGC_page_table related pieces.
-
---- a/xen/arch/x86/mm/hap/hap.c
-+++ b/xen/arch/x86/mm/hap/hap.c
-@@ -286,8 +286,7 @@ static struct page_info *hap_alloc_p2m_p
-     {
-         d->arch.paging.hap.total_pages--;
-         d->arch.paging.hap.p2m_pages++;
--        page_set_owner(pg, d);
--        pg->count_info |= 1;
-+        ASSERT(!page_get_owner(pg) && !(pg->count_info & PGC_count_mask));
-     }
-     else if ( !d->arch.paging.p2m_alloc_failed )
-     {
-@@ -302,21 +301,23 @@ static struct page_info *hap_alloc_p2m_p
- 
- static void hap_free_p2m_page(struct domain *d, struct page_info *pg)
- {
-+    struct domain *owner = page_get_owner(pg);
-+
-     /* This is called both from the p2m code (which never holds the 
-      * paging lock) and the log-dirty code (which always does). */
-     paging_lock_recursive(d);
- 
--    ASSERT(page_get_owner(pg) == d);
--    /* Should have just the one ref we gave it in alloc_p2m_page() */
--    if ( (pg->count_info & PGC_count_mask) != 1 ) {
--        HAP_ERROR("Odd p2m page %p count c=%#lx t=%"PRtype_info"\n",
--                     pg, pg->count_info, pg->u.inuse.type_info);
-+    /* Should still have no owner and count zero. */
-+    if ( owner || (pg->count_info & PGC_count_mask) )
-+    {
-+        HAP_ERROR("d%d: Odd p2m page %"PRI_mfn" d=%d c=%lx t=%"PRtype_info"\n",
-+                  d->domain_id, mfn_x(page_to_mfn(pg)),
-+                  owner ? owner->domain_id : DOMID_INVALID,
-+                  pg->count_info, pg->u.inuse.type_info);
-         WARN();
-+        pg->count_info &= ~PGC_count_mask;
-+        page_set_owner(pg, NULL);
-     }
--    pg->count_info &= ~PGC_count_mask;
--    /* Free should not decrement domain's total allocation, since
--     * these pages were allocated without an owner. */
--    page_set_owner(pg, NULL);
-     d->arch.paging.hap.p2m_pages--;
-     d->arch.paging.hap.total_pages++;
-     hap_free(d, page_to_mfn(pg));
---- a/xen/arch/x86/mm/shadow/common.c
-+++ b/xen/arch/x86/mm/shadow/common.c
-@@ -1503,32 +1503,29 @@ shadow_alloc_p2m_page(struct domain *d)
-     pg = mfn_to_page(shadow_alloc(d, SH_type_p2m_table, 0));
-     d->arch.paging.shadow.p2m_pages++;
-     d->arch.paging.shadow.total_pages--;
-+    ASSERT(!page_get_owner(pg) && !(pg->count_info & PGC_count_mask));
- 
-     paging_unlock(d);
- 
--    /* Unlike shadow pages, mark p2m pages as owned by the domain.
--     * Marking the domain as the owner would normally allow the guest to
--     * create mappings of these pages, but these p2m pages will never be
--     * in the domain's guest-physical address space, and so that is not
--     * believed to be a concern. */
--    page_set_owner(pg, d);
--    pg->count_info |= 1;
-     return pg;
- }
- 
- static void
- shadow_free_p2m_page(struct domain *d, struct page_info *pg)
- {
--    ASSERT(page_get_owner(pg) == d);
--    /* Should have just the one ref we gave it in alloc_p2m_page() */
--    if ( (pg->count_info & PGC_count_mask) != 1 )
-+    struct domain *owner = page_get_owner(pg);
-+
-+    /* Should still have no owner and count zero. */
-+    if ( owner || (pg->count_info & PGC_count_mask) )
-     {
--        SHADOW_ERROR("Odd p2m page count c=%#lx t=%"PRtype_info"\n",
-+        SHADOW_ERROR("d%d: Odd p2m page %"PRI_mfn" d=%d c=%lx t=%"PRtype_info"\n",
-+                     d->domain_id, mfn_x(page_to_mfn(pg)),
-+                     owner ? owner->domain_id : DOMID_INVALID,
-                      pg->count_info, pg->u.inuse.type_info);
-+        pg->count_info &= ~PGC_count_mask;
-+        page_set_owner(pg, NULL);
-     }
--    pg->count_info &= ~PGC_count_mask;
-     pg->u.sh.type = SH_type_p2m_table; /* p2m code reuses type-info */
--    page_set_owner(pg, NULL);
- 
-     /* This is called both from the p2m code (which never holds the
-      * paging lock) and the log-dirty code (which always does). */
-@@ -3132,7 +3129,9 @@ int shadow_enable(struct domain *d, u32
-         e = __map_domain_page(pg);
-         write_32bit_pse_identmap(e);
-         unmap_domain_page(e);
-+        pg->count_info = 1;
-         pg->u.inuse.type_info = PGT_l2_page_table | 1 | PGT_validated;
-+        page_set_owner(pg, d);
-     }
- 
-     paging_lock(d);
-@@ -3170,7 +3169,11 @@ int shadow_enable(struct domain *d, u32
-     if ( rv != 0 && !pagetable_is_null(p2m_get_pagetable(p2m)) )
-         p2m_teardown(p2m);
-     if ( rv != 0 && pg != NULL )
-+    {
-+        pg->count_info &= ~PGC_count_mask;
-+        page_set_owner(pg, NULL);
-         shadow_free_p2m_page(d, pg);
-+    }
-     domain_unpause(d);
-     return rv;
- }
-@@ -3279,7 +3282,22 @@ out:
- 
-     /* Must be called outside the lock */
-     if ( unpaged_pagetable )
-+    {
-+        if ( page_get_owner(unpaged_pagetable) == d &&
-+             (unpaged_pagetable->count_info & PGC_count_mask) == 1 )
-+        {
-+            unpaged_pagetable->count_info &= ~PGC_count_mask;
-+            page_set_owner(unpaged_pagetable, NULL);
-+        }
-+        /* Complain here in cases where shadow_free_p2m_page() won't. */
-+        else if ( !page_get_owner(unpaged_pagetable) &&
-+                  !(unpaged_pagetable->count_info & PGC_count_mask) )
-+            SHADOW_ERROR("d%d: Odd unpaged pt %"PRI_mfn" c=%lx t=%"PRtype_info"\n",
-+                         d->domain_id, mfn_x(page_to_mfn(unpaged_pagetable)),
-+                         unpaged_pagetable->count_info,
-+                         unpaged_pagetable->u.inuse.type_info);
-         shadow_free_p2m_page(d, unpaged_pagetable);
-+    }
- }
- 
- void shadow_final_teardown(struct domain *d)
diff --git a/import-layers/meta-virtualization/recipes-extended/xen/files/xsa249.patch b/import-layers/meta-virtualization/recipes-extended/xen/files/xsa249.patch
deleted file mode 100644
index ecfa430..0000000
--- a/import-layers/meta-virtualization/recipes-extended/xen/files/xsa249.patch
+++ /dev/null
@@ -1,42 +0,0 @@
-From: Jan Beulich <jbeulich@suse.com>
-Subject: x86/shadow: fix refcount overflow check
-
-Commit c385d27079 ("x86 shadow: for multi-page shadows, explicitly track
-the first page") reduced the refcount width to 25, without adjusting the
-overflow check. Eliminate the disconnect by using a manifest constant.
-
-Interestingly, up to commit 047782fa01 ("Out-of-sync L1 shadows: OOS
-snapshot") the refcount was 27 bits wide, yet the check was already
-using 26.
-
-This is XSA-249.
-
-Signed-off-by: Jan Beulich <jbeulich@suse.com>
-Reviewed-by: George Dunlap <george.dunlap@citrix.com>
-Reviewed-by: Tim Deegan <tim@xen.org>
----
-v2: Simplify expression back to the style it was.
-
---- a/xen/arch/x86/mm/shadow/private.h
-+++ b/xen/arch/x86/mm/shadow/private.h
-@@ -529,7 +529,7 @@ static inline int sh_get_ref(struct doma
-     x = sp->u.sh.count;
-     nx = x + 1;
- 
--    if ( unlikely(nx >= 1U<<26) )
-+    if ( unlikely(nx >= (1U << PAGE_SH_REFCOUNT_WIDTH)) )
-     {
-         SHADOW_PRINTK("shadow ref overflow, gmfn=%lx smfn=%lx\n",
-                        __backpointer(sp), mfn_x(smfn));
---- a/xen/include/asm-x86/mm.h
-+++ b/xen/include/asm-x86/mm.h
-@@ -82,7 +82,8 @@ struct page_info
-             unsigned long type:5;   /* What kind of shadow is this? */
-             unsigned long pinned:1; /* Is the shadow pinned? */
-             unsigned long head:1;   /* Is this the first page of the shadow? */
--            unsigned long count:25; /* Reference count */
-+#define PAGE_SH_REFCOUNT_WIDTH 25
-+            unsigned long count:PAGE_SH_REFCOUNT_WIDTH; /* Reference count */
-         } sh;
- 
-         /* Page is on a free list: ((count_info & PGC_count_mask) == 0). */
diff --git a/import-layers/meta-virtualization/recipes-extended/xen/files/xsa250.patch b/import-layers/meta-virtualization/recipes-extended/xen/files/xsa250.patch
deleted file mode 100644
index 26aeb33..0000000
--- a/import-layers/meta-virtualization/recipes-extended/xen/files/xsa250.patch
+++ /dev/null
@@ -1,67 +0,0 @@
-From: Jan Beulich <jbeulich@suse.com>
-Subject: x86/shadow: fix ref-counting error handling
-
-The old-Linux handling in shadow_set_l4e() mistakenly ORed together the
-results of sh_get_ref() and sh_pin(). As the latter failing is not a
-correctness problem, simply ignore its return value.
-
-In sh_set_toplevel_shadow() a failing sh_get_ref() must not be
-accompanied by installing the entry, despite the domain being crashed.
-
-This is XSA-250.
-
-Signed-off-by: Jan Beulich <jbeulich@suse.com>
-Reviewed-by: Tim Deegan <tim@xen.org>
-
---- a/xen/arch/x86/mm/shadow/multi.c
-+++ b/xen/arch/x86/mm/shadow/multi.c
-@@ -923,7 +923,7 @@ static int shadow_set_l4e(struct domain
-                           shadow_l4e_t new_sl4e,
-                           mfn_t sl4mfn)
- {
--    int flags = 0, ok;
-+    int flags = 0;
-     shadow_l4e_t old_sl4e;
-     paddr_t paddr;
-     ASSERT(sl4e != NULL);
-@@ -938,15 +938,16 @@ static int shadow_set_l4e(struct domain
-     {
-         /* About to install a new reference */
-         mfn_t sl3mfn = shadow_l4e_get_mfn(new_sl4e);
--        ok = sh_get_ref(d, sl3mfn, paddr);
--        /* Are we pinning l3 shadows to handle wierd linux behaviour? */
--        if ( sh_type_is_pinnable(d, SH_type_l3_64_shadow) )
--            ok |= sh_pin(d, sl3mfn);
--        if ( !ok )
-+
-+        if ( !sh_get_ref(d, sl3mfn, paddr) )
-         {
-             domain_crash(d);
-             return SHADOW_SET_ERROR;
-         }
-+
-+        /* Are we pinning l3 shadows to handle weird Linux behaviour? */
-+        if ( sh_type_is_pinnable(d, SH_type_l3_64_shadow) )
-+            sh_pin(d, sl3mfn);
-     }
- 
-     /* Write the new entry */
-@@ -3965,14 +3966,15 @@ sh_set_toplevel_shadow(struct vcpu *v,
- 
-     /* Take a ref to this page: it will be released in sh_detach_old_tables()
-      * or the next call to set_toplevel_shadow() */
--    if ( !sh_get_ref(d, smfn, 0) )
-+    if ( sh_get_ref(d, smfn, 0) )
-+        new_entry = pagetable_from_mfn(smfn);
-+    else
-     {
-         SHADOW_ERROR("can't install %#lx as toplevel shadow\n", mfn_x(smfn));
-         domain_crash(d);
-+        new_entry = pagetable_null();
-     }
- 
--    new_entry = pagetable_from_mfn(smfn);
--
-  install_new_entry:
-     /* Done.  Install it */
-     SHADOW_PRINTK("%u/%u [%u] gmfn %#"PRI_mfn" smfn %#"PRI_mfn"\n",
diff --git a/import-layers/meta-virtualization/recipes-extended/xen/files/xsa251.patch b/import-layers/meta-virtualization/recipes-extended/xen/files/xsa251.patch
deleted file mode 100644
index 582ef62..0000000
--- a/import-layers/meta-virtualization/recipes-extended/xen/files/xsa251.patch
+++ /dev/null
@@ -1,21 +0,0 @@
-From: Jan Beulich <jbeulich@suse.com>
-Subject: x86/paging: don't unconditionally BUG() on finding SHARED_M2P_ENTRY
-
-PV guests can fully control the values written into the P2M.
-
-This is XSA-251.
-
-Signed-off-by: Jan Beulich <jbeulich@suse.com>
-Reviewed-by: Andrew Cooper <andrew.cooper3@citrix.com>
-
---- a/xen/arch/x86/mm/paging.c
-+++ b/xen/arch/x86/mm/paging.c
-@@ -274,7 +274,7 @@ void paging_mark_pfn_dirty(struct domain
-         return;
- 
-     /* Shared MFNs should NEVER be marked dirty */
--    BUG_ON(SHARED_M2P(pfn_x(pfn)));
-+    BUG_ON(paging_mode_translate(d) && SHARED_M2P(pfn_x(pfn)));
- 
-     /*
-      * Values with the MSB set denote MFNs that aren't really part of the
diff --git a/import-layers/meta-virtualization/recipes-extended/xen/files/xsa253.patch b/import-layers/meta-virtualization/recipes-extended/xen/files/xsa253.patch
deleted file mode 100644
index 19e4269..0000000
--- a/import-layers/meta-virtualization/recipes-extended/xen/files/xsa253.patch
+++ /dev/null
@@ -1,26 +0,0 @@
-From: Andrew Cooper <andrew.cooper3@citrix.com>
-Subject: x86/msr: Free msr_vcpu_policy during vcpu destruction
-
-c/s 4187f79dc7 "x86/msr: introduce struct msr_vcpu_policy" introduced a
-per-vcpu memory allocation, but failed to free it in the clean vcpu
-destruction case.
-
-This is XSA-253
-
-Signed-off-by: Andrew Cooper <andrew.cooper3@citrix.com>
-Reviewed-by: Jan Beulich <jbeulich@suse.com>
-
-diff --git a/xen/arch/x86/domain.c b/xen/arch/x86/domain.c
-index b17468c..0ae715d 100644
---- a/xen/arch/x86/domain.c
-+++ b/xen/arch/x86/domain.c
-@@ -382,6 +382,9 @@ void vcpu_destroy(struct vcpu *v)
- 
-     vcpu_destroy_fpu(v);
- 
-+    xfree(v->arch.msr);
-+    v->arch.msr = NULL;
-+
-     if ( !is_idle_domain(v->domain) )
-         vpmu_destroy(v);
- 
diff --git a/import-layers/meta-virtualization/recipes-extended/xen/lwip.inc b/import-layers/meta-virtualization/recipes-extended/xen/lwip.inc
deleted file mode 100644
index e083633..0000000
--- a/import-layers/meta-virtualization/recipes-extended/xen/lwip.inc
+++ /dev/null
@@ -1,24 +0,0 @@
-# Copyright (C) 2018 kebodiker <kurt.bodiker@braintrust-us.com>
-# Released under the MIT license (see COPYING.MIT for the terms)
-
-require stubdom.inc
-
-# clear this out to break dependency circle
-DEPENDS = ""
-
-# Nothing to configure or compile
-# For stubdoms, lwip is basically a source package with a couple of patches applied.
-do_configure[noexec] = "1"
-do_compile[noexec] = "1"
-
-# needed because this directory isn't typically part of a sysroot
-SYSROOT_DIRS += "${prefix}/lwip"
-
-FILES_${PN} = "\
-    ${prefix} \
-"
-
-do_install() {
-    install -d ${D}${prefix}/lwip
-    cp -r -t ${D}${prefix}/lwip ${S}/src/*
-}
diff --git a/import-layers/meta-virtualization/recipes-extended/xen/lwip_1.3.0.bb b/import-layers/meta-virtualization/recipes-extended/xen/lwip_1.3.0.bb
deleted file mode 100644
index b7d8e95..0000000
--- a/import-layers/meta-virtualization/recipes-extended/xen/lwip_1.3.0.bb
+++ /dev/null
@@ -1,19 +0,0 @@
-# Copyright (C) 2018 kebodiker <kurt.bodiker@braintrust-us.com>
-# Released under the MIT license (see COPYING.MIT for the terms)
-
-DESCRIPTION = "LWIP"
-HOMEPAGE = "https://savannah.nongnu.org/projects/lwip"
-LICENSE = "BSD"
-LIC_FILES_CHKSUM = "file://COPYING;md5=59a383b05013356e0c9899b06dc5da3f"
-
-SRCREV_lwip = "bcb4afa886408bf0a1dde9c2a4a00323c8b07eb1"
-SRC_URI = "\
-    git://git.savannah.gnu.org/lwip.git;protocol=git;nobranch=1;destsuffix=lwip;name=lwip \
-    file://lwip.patch-cvs \
-    file://lwip.dhcp_create_request-hwaddr_len.patch \
-"
-
-S="${WORKDIR}/${PN}"
-B="${S}"
-
-require lwip.inc
diff --git a/import-layers/meta-virtualization/recipes-extended/xen/mini-os.inc b/import-layers/meta-virtualization/recipes-extended/xen/mini-os.inc
deleted file mode 100644
index 61c2704..0000000
--- a/import-layers/meta-virtualization/recipes-extended/xen/mini-os.inc
+++ /dev/null
@@ -1,28 +0,0 @@
-# Copyright (C) 2018 kebodiker <kurt.bodiker@braintrust-us.com>
-# Released under the MIT license (see COPYING.MIT for the terms)
-
-require stubdom.inc
-
-# clear this out to break dependency circle
-DEPENDS = ""
-
-do_configure() {
-    ${MAKE} -C ${WORKDIR}/mini-os links
-}
-
-# Nothing to configure or compile
-do_compile[noexec] = "1"
-
-# needed because this directory isn't typically part of a sysroot
-SYSROOT_DIRS += "${prefix}/mini-os"
-RDEPENDS_${PN}-dev = "perl"
-
-FILES_${PN}-dev = "\
-    ${prefix} \
-"
-
-do_install() {
-    install -d ${D}${prefix}/mini-os
-    cp -r -t ${D}${prefix}/mini-os ${S}/*
-    rm -rf ${D}${prefix}/mini-os/scripts
-}
diff --git a/import-layers/meta-virtualization/recipes-extended/xen/mini-os_4.9.0.bb b/import-layers/meta-virtualization/recipes-extended/xen/mini-os_4.9.0.bb
deleted file mode 100644
index 298bc8d..0000000
--- a/import-layers/meta-virtualization/recipes-extended/xen/mini-os_4.9.0.bb
+++ /dev/null
@@ -1,18 +0,0 @@
-# Copyright (C) 2017 Kurt Bodiker <kurt.bodiker@braintrust-us.com>
-# Released under the MIT license (see COPYING.MIT for the terms)
-
-DESCRIPTION = "Mini-OS is a tiny OS kernel distributed with the Xen Project"
-HOMEPAGE = "https://wiki.xenproject.org/wiki/Mini-OS"
-LICENSE = "GPLv2"
-LIC_FILES_CHKSUM = "file://COPYING;md5=8a437231894440a8f7629caa372243d0"
-
-# git commit hash for tags: xen-RELEASE-4.9.0, xen-RELEASE-4.9.1, xen-RELEASE-4.9.2
-SRCREV_minios = "ca013fa9baf92f47469ba1f2e1aaa31c41d8a0bb"
-SRC_URI = "\
-    git://xenbits.xen.org/mini-os.git;protocol=git;nobranch=1;destsuffix=mini-os;name=minios \
-    file://mini-os_udivmoddi4-gcc7.patch \
-"
-S="${WORKDIR}/mini-os"
-B="${S}"
-
-require mini-os.inc
diff --git a/import-layers/meta-virtualization/recipes-extended/xen/newlib.inc b/import-layers/meta-virtualization/recipes-extended/xen/newlib.inc
deleted file mode 100644
index 1fdbd0a..0000000
--- a/import-layers/meta-virtualization/recipes-extended/xen/newlib.inc
+++ /dev/null
@@ -1,64 +0,0 @@
-# Copyright (C) 2017 Kurt Bodiker <kurt.bodiker@braintrust-us.com>
-# Released under the MIT license (see COPYING.MIT for the terms)
-
-require stubdom.inc
-
-CPPFLAGS_INCLUDE_DIR = "-isystem `${HOST_PREFIX}gcc -print-file-name=include`"
-STUBDOM_CFLAGS += "-D_I386MACH_ALLOW_HW_INTERRUPTS"
-
-export ac_cv_path_CC_FOR_TARGET="${HOST_PREFIX}gcc --sysroot=${RECIPE_SYSROOT} ${STUBDOM_CPPFLAGS} ${STUBDOM_CFLAGS}"
-export CC_FOR_TARGET="${HOST_PREFIX}gcc --sysroot=${RECIPE_SYSROOT} ${STUBDOM_CPPFLAGS} ${STUBDOM_CFLAGS}"
-
-export ac_cv_path_CXX_FOR_TARGET="${HOST_PREFIX}g++ --sysroot=${RECIPE_SYSROOT}"
-export CXX_FOR_TARGET="${HOST_PREFIX}g++ --sysroot=${RECIPE_SYSROOT}"
-
-export ac_cv_path_CPP_FOR_TARGET="${HOST_PREFIX}gcc -E --sysroot=${RECIPE_SYSROOT}"
-export CPP_FOR_TARGET="${HOST_PREFIX}gcc -E --sysroot=${RECIPE_SYSROOT}"
-
-export ac_cv_path_LD_FOR_TARGET="${HOST_PREFIX}ld --sysroot=${RECIPE_SYSROOT}"
-export LD_FOR_TARGET="${HOST_PREFIX}ld --sysroot=${RECIPE_SYSROOT}"
-
-export ac_cv_path_AS_FOR_TARGET="${HOST_PREFIX}as"
-export AS_FOR_TARGET="${HOST_PREFIX}as"
-
-export ac_cv_path_AR_FOR_TARGET="${HOST_PREFIX}ar"
-export AR_FOR_TARGET="${HOST_PREFIX}ar"
-
-export ac_cv_path_NM_FOR_TARGET="${HOST_PREFIX}nm"
-export NM_FOR_TARGET="${HOST_PREFIX}nm"
-
-export ac_cv_path_RANLIB_FOR_TARGET="${HOST_PREFIX}ranlib"
-export RANLIB_FOR_TARGET="${HOST_PREFIX}ranlib"
-
-export ac_cv_path_OBJDUMP_FOR_TARGET="${HOST_PREFIX}objdump"
-export OBJDUMP_FOR_TARGET="${HOST_PREFIX}objdump"
-
-export ac_cv_path_OBJCOPY_FOR_TARGET="${HOST_PREFIX}objcopy"
-export OBJCOPY_FOR_TARGET="${HOST_PREFIX}objcopy"
-
-export ac_cv_path_STRIP_FOR_TARGET="${HOST_PREFIX}strip"
-export STRIP_FOR_TARGET="${HOST_PREFIX}strip"
-
-export ac_cv_path_STRINGS_FOR_TARGET="${HOST_PREFIX}strings"
-export STRINGS_FOR_TARGET="${HOST_PREFIX}strings"
-
-export ac_cv_path_READELF_FOR_TARGET="${HOST_PREFIX}readelf"
-export READELF_FOR_TARGET="${HOST_PREFIX}readelf"
-
-do_configure() {
-    ${S}/configure --verbose --prefix=${prefix} --target=${GNU_TARGET_ARCH}-xen-elf --enable-newlib-io-long-long --disable-multilib
-    find ${S} -type f | xargs perl -i.bak -pe 's/\b_(tzname|daylight|timezone)\b/$1/g'
-}
-
-do_compile() {
-    ${MAKE}
-}
-
-do_install() {
-    ${MAKE} DESTDIR=${D} install
-    rm -rf ${D}/cross-root-${GNU_TARGET_ARCH}/share
-    rm -rf ${D}/cross-root-${GNU_TARGET_ARCH}/info
-    install -m 644 `${HOST_PREFIX}gcc -print-file-name=include`/stdarg.h -t ${D}/${includedir}
-    install -m 644 `${HOST_PREFIX}gcc -print-file-name=include`/stddef.h -t ${D}/${includedir}
-    install -m 644 `${HOST_PREFIX}gcc -print-file-name=include`/stdbool.h -t ${D}/${includedir}
-}
diff --git a/import-layers/meta-virtualization/recipes-extended/xen/newlib_1.16.0.bb b/import-layers/meta-virtualization/recipes-extended/xen/newlib_1.16.0.bb
deleted file mode 100644
index 60672be..0000000
--- a/import-layers/meta-virtualization/recipes-extended/xen/newlib_1.16.0.bb
+++ /dev/null
@@ -1,21 +0,0 @@
-# Copyright (C) 2017 Kurt Bodiker <kurt.bodiker@braintrust-us.com>
-# Released under the MIT license (see COPYING.MIT for the terms)
-
-DESCRIPTION = "Newlib is a C library intended for use on embedded systems."
-HOMEPAGE = "http://sourceware.org/newlib"
-LICENSE = "GPLv2 & LGPLv3 & GPLv3 & LGPLv2"
-LIC_FILES_CHKSUM = "file://COPYING.NEWLIB;md5=950f50b290e8fcf7a2d3fff61775de9b"
-
-# this is the hash of version tag 1_16_0
-SRCREV_newlib = "07b4b67a88f386ce4716a14e0ff2c2bce992b985"
-SRC_URI = "\
-    git://sourceware.org/git/newlib-cygwin.git;protocol=git;nobranch=1;destsuffix=newlib;name=newlib \
-    file://newlib.patch \
-    file://newlib-chk.patch \
-    file://newlib-stdint-size_max-fix-from-1.17.0.patch \
-"
-
-S="${WORKDIR}/newlib"
-B="${WORKDIR}/build"
-
-require newlib.inc
diff --git a/import-layers/meta-virtualization/recipes-extended/xen/polarssl.inc b/import-layers/meta-virtualization/recipes-extended/xen/polarssl.inc
deleted file mode 100644
index eae95f4..0000000
--- a/import-layers/meta-virtualization/recipes-extended/xen/polarssl.inc
+++ /dev/null
@@ -1,27 +0,0 @@
-# Copyright (C) 2017 Kurt Bodiker <kurt.bodiker@braintrust-us.com>
-# Released under the MIT license (see COPYING.MIT for the terms)
-
-require stubdom.inc
-
-DEPENDS += "\
-    newlib \
-"
-STUBDOM_CFLAGS += "\
-    -Wno-memset-elt-size \
-    -Wno-implicit-fallthrough \
-"
-
-# nothing to configure
-do_configure[noexec] = "1"
-
-do_compile() {
-    ${MAKE} CC="${HOST_PREFIX}gcc --sysroot=${RECIPE_SYSROOT} ${STUBDOM_CPPFLAGS} ${STUBDOM_CFLAGS}"
-}
-
-do_install() {
-    install -d ${D}${includedir}
-    cp -r -t ${D}${includedir} ${S}/include/polarssl
-
-    install -d ${D}/${libdir}
-    install -m 644 -t ${D}/${libdir} ${S}/library/libpolarssl.a
-}
diff --git a/import-layers/meta-virtualization/recipes-extended/xen/polarssl_1.1.4.bb b/import-layers/meta-virtualization/recipes-extended/xen/polarssl_1.1.4.bb
deleted file mode 100644
index 80ea45a..0000000
--- a/import-layers/meta-virtualization/recipes-extended/xen/polarssl_1.1.4.bb
+++ /dev/null
@@ -1,19 +0,0 @@
-# Copyright (C) 2017 Kurt Bodiker <kurt.bodiker@braintrust-us.com>
-# Released under the MIT license (see COPYING.MIT for the terms)
-
-DESCRIPTION = "PolarSSL (now 'mbed TLS') is an open source, portable, easy to use, readable and flexible SSL library."
-HOMEPAGE = "https://tls.mbed.org"
-LICENSE = "GPLv2"
-LIC_FILES_CHKSUM = "file://LICENSE;md5=751419260aa954499f7abaabaa882bbe"
-
-# git hash for release tag polarssl-1.1.4
-SRCREV_polarssl = "d36da11125a9c85c572a4fdf63e0a25e76d7bb18"
-SRC_URI = "\
-    git://github.com/ARMmbed/mbedtls.git;protocol=https;nobranch=1;destsuffix=polarssl;name=polarssl \
-    file://polarssl.patch; \
-"
-
-S="${WORKDIR}/${PN}"
-B="${S}/library"
-
-require polarssl.inc
diff --git a/import-layers/meta-virtualization/recipes-extended/xen/stubdom-gmp.inc b/import-layers/meta-virtualization/recipes-extended/xen/stubdom-gmp.inc
deleted file mode 100644
index ef6473d..0000000
--- a/import-layers/meta-virtualization/recipes-extended/xen/stubdom-gmp.inc
+++ /dev/null
@@ -1,37 +0,0 @@
-# Copyright (C) 2017 Kurt Bodiker <kurt.bodiker@braintrust-us.com>
-# Released under the MIT license (see COPYING.MIT for the terms)
-
-require stubdom.inc
-
-DEPENDS += "\
-    newlib \
-"
-
-do_configure() {
-    # need to modify prefix here during configure otherwise OE-level variables
-    # (prefix, libdir, includedir, etc...) defined in stubdom.inc get messed up
-    CPPFLAGS="-isystem ${RECIPE_SYSROOT}/cross-root-${GNU_TARGET_ARCH}/${GNU_TARGET_ARCH}-xen-elf/include ${STUBDOM_CPPFLAGS}" \
-    CFLAGS="${STUBDOM_CFLAGS}" \
-    CC="${HOST_PREFIX}gcc --sysroot=${RECIPE_SYSROOT}" \
-    ${S}/configure \
-        --disable-shared \
-        --enable-static \
-        --disable-fft \
-        --without-readline \
-        --with-gnu-ld \
-        --prefix=${prefix}/${GNU_TARGET_ARCH}-xen-elf \
-        --libdir=${libdir} \
-        --build=`${HOST_PREFIX}gcc -dumpmachine` \
-        --host=${GNU_TARGET_ARCH}-xen-elf
-
-    sed -i 's/#define HAVE_OBSTACK_VPRINTF 1/\/\/#define HAVE_OBSTACK_VPRINTF 1/' ${S}/config.h
-}
-
-do_compile() {
-    ${MAKE}
-}
-
-do_install() {
-    ${MAKE} DESTDIR=${D} install
-    rm -rf ${D}${prefix}/${GNU_TARGET_ARCH}-xen-elf/share
-}
diff --git a/import-layers/meta-virtualization/recipes-extended/xen/stubdom-gmp_4.3.2.bb b/import-layers/meta-virtualization/recipes-extended/xen/stubdom-gmp_4.3.2.bb
deleted file mode 100644
index d9a2adb..0000000
--- a/import-layers/meta-virtualization/recipes-extended/xen/stubdom-gmp_4.3.2.bb
+++ /dev/null
@@ -1,20 +0,0 @@
-# Copyright (C) 2017 Kurt Bodiker <kurt.bodiker@braintrust-us.com>
-# Released under the MIT license (see COPYING.MIT for the terms)
-
-DESCRIPTION = "GMP library for Xen vTPM's."
-HOMEPAGE = "http://gmp"
-LICENSE = "GPLv3"
-LIC_FILES_CHKSUM = "file://COPYING;md5=d32239bcb673463ab874e80d47fae504 \
-                    file://COPYING.LIB;md5=6a6a8e020838b23406c81b19c1d46df6 \
-"
-
-SRC_URI = "\
-    https://gmplib.org/download/gmp/archive/gmp-${PV}.tar.bz2 \
-"
-SRC_URI[md5sum] = "dd60683d7057917e34630b4a787932e8"
-SRC_URI[sha256sum] = "936162c0312886c21581002b79932829aa048cfaf9937c6265aeaa14f1cd1775"
-
-S="${WORKDIR}/gmp-${PV}"
-B="${S}"
-
-require stubdom-gmp.inc
diff --git a/import-layers/meta-virtualization/recipes-extended/xen/stubdom.inc b/import-layers/meta-virtualization/recipes-extended/xen/stubdom.inc
deleted file mode 100644
index bfc6752..0000000
--- a/import-layers/meta-virtualization/recipes-extended/xen/stubdom.inc
+++ /dev/null
@@ -1,152 +0,0 @@
-# Copyright (C) 2017 Kurt Bodiker <kurt.bodiker@braintrust-us.com>
-# Released under the MIT license (see COPYING.MIT for the terms)
-
-COMPATIBLE_HOST = '(x86_64.*).*-linux'
-
-require xen-arch.inc
-
-# many of the xen stubdom related recipes build and package static instead of shared libraries
-EXCLUDE_FROM_SHLIBS = "1"
-
-# base set of dependencies to be used for xen stubdom recipes
-DEPENDS += "\
-    lwip \
-    mini-os \
-"
-
-# unset EVERYTHING from the OE environment.
-# Weird things happen when these are exported into the environment.
-unset CFLAGS
-unset BUILD_CFLAGS
-unset TARGET_CFLAGS
-unset CFLAGS_FOR_BUILD
-
-unset CPPFLAGS
-unset BUILD_CPPFLAGS
-unset TARGET_CPPFLAGS
-unset CPPFLAGS_FOR_BUILD
-
-unset LDFLAGS
-unset BUILD_LDFLAGS
-unset TARGET_LDFLAGS
-unset LDFLAGS_FOR_BUILD
-
-unset CXXFLAGS
-unset TARGET_CXXFLAGS
-unset BUILD_CXXFLAGS
-unset CXXFLAGS_FOR_BUILD
-
-unset BUILD_CC
-unset BUILD_CPP
-unset BUILD_CXX
-unset BUILD_LD
-unset BUILD_AR
-unset BUILD_AS
-unset BUILD_CCLD
-unset BUILD_FC
-unset BUILD_RANLIB
-unset BUILD_NM
-unset BUILD_STRIP
-unset BUILD_READELF
-unset BUILD_OBJCOPY
-unset BUILD_OBJDUMP
-unset CC
-unset CPP
-unset CXX
-unset LD
-unset AR
-unset AS
-unset NM
-unset RANLIB
-unset STRIP
-unset STRINGS
-unset READELF
-unset OBJCOPY
-unset OBJDUMP
-unset READELF
-unset CCLD
-unset FC
-
-# Provide support to build both 32-bit and 64-bit stubdoms
-python () {
-    gnu_dict = {
-            'x86_32': 'i686',
-            'x86_64': 'x86_64',
-        }
-
-    if d.expand('${XEN_TARGET_ARCH}') == 'x86_32':
-        d.setVar("GNU_TARGET_ARCH",gnu_dict[d.expand('${XEN_TARGET_ARCH}')])
-        d.setVar("PACKAGE_ARCH","core2-32")
-    elif d.expand('${XEN_TARGET_ARCH}') == 'x86_64':
-        d.setVar("GNU_TARGET_ARCH",gnu_dict[d.expand('${XEN_TARGET_ARCH}')])
-}
-
-export GNU_TARGET_ARCH
-export XEN_TARGET_ARCH="${@map_xen_arch(d.getVar('TARGET_ARCH'), d)}"
-export XEN_COMPILE_ARCH="${@map_xen_arch(d.getVar('BUILD_ARCH'), d)}"
-
-LWIP_SRCDIR = "${RECIPE_SYSROOT}/cross-root-${GNU_TARGET_ARCH}/lwip"
-MINIOS_SRCDIR = "${RECIPE_SYSROOT}/cross-root-${GNU_TARGET_ARCH}/mini-os"
-
-# Base set of CPPFLAGS, CFLAGS needed for each component used to build MiniOS-based stubdoms
-# LDFLAGS are only used when building stubdoms, so only used in stubdom recipes
-# Generic name given because each library uses DEF_, BUILD_, TARGET_, and xxxFLAGS differently
-CPPFLAGS_INCLUDE_DIR = "-isystem ${RECIPE_SYSROOT}/cross-root-${GNU_TARGET_ARCH}/${GNU_TARGET_ARCH}-xen-elf/include"
-
-STUBDOM_CPPFLAGS += "\
-    -isystem ${MINIOS_SRCDIR}/include \
-    -D__MINIOS__ \
-    -DHAVE_LIBC \
-    -isystem ${MINIOS_SRCDIR}/include/posix \
-    -isystem ${MINIOS_SRCDIR}/include/xen \
-    -isystem ${MINIOS_SRCDIR}/include/x86 \
-    -isystem ${MINIOS_SRCDIR}/include/x86/${XEN_TARGET_ARCH} \
-    -U __linux__ \
-    -U __FreeBSD__ \
-    -U __sun__ \
-    -nostdinc \
-    ${CPPFLAGS_INCLUDE_DIR} \
-    -isystem ${LWIP_SRCDIR}/include \
-    -isystem ${LWIP_SRCDIR}/include/ipv4 \
-"
-
-STUBDOM_CFLAGS += "\
-    -mno-red-zone \
-    -O1 \
-    -fno-omit-frame-pointer \
-    -m64 \
-    -fno-reorder-blocks \
-    -fno-asynchronous-unwind-tables \
-    -DBUILD_ID \
-    -fno-strict-aliasing \
-    -std=gnu99 \
-    -Wall \
-    -Wstrict-prototypes \
-    -Wdeclaration-after-statement \
-    -Wno-unused-but-set-variable \
-    -Wno-unused-local-typedefs \
-    -fno-stack-protector \
-    -fno-exceptions \
-"
-
-STUBDOM_LDFLAGS = "\
-    -nostdlib \
-    -L${RECIPE_SYSROOT}/cross-root-${GNU_TARGET_ARCH}/${GNU_TARGET_ARCH}-xen-elf/lib \
-"
-
-# Need to redefine these for stubdom-related builds. It all starts because of
-# the prefix used in newlib and then continues because we don't want to
-# cross-contaminate stubdom-related recipes with headers and libraries found in
-# the OE-defined locations
-export prefix="/cross-root-${GNU_TARGET_ARCH}"
-export includedir="${prefix}/${GNU_TARGET_ARCH}-xen-elf/include"
-export libdir="${prefix}/${GNU_TARGET_ARCH}-xen-elf/lib"
-export libexecdir="${libdir}"
-export STAGING_INCDIR
-export STAGING_LIBDIR
-
-# Typically defined in Xen and Minios .mk files that aren't sourced/read,
-# defined to trigger some values and paths in Makefiles
-export debug="y"
-export stubdom="y"
-export XEN_OS="MiniOS"
diff --git a/import-layers/meta-virtualization/recipes-extended/xen/tpm-emulator.inc b/import-layers/meta-virtualization/recipes-extended/xen/tpm-emulator.inc
deleted file mode 100644
index f58a276..0000000
--- a/import-layers/meta-virtualization/recipes-extended/xen/tpm-emulator.inc
+++ /dev/null
@@ -1,37 +0,0 @@
-# Copyright (C) 2017 Kurt Bodiker <kurt.bodiker@braintrust-us.com>
-# Released under the MIT license (see COPYING.MIT for the terms)
-
-require stubdom.inc
-
-DEPENDS += "\
-    cmake-native \
-    newlib \
-    stubdom-gmp \
-"
-
-# nothing to configure
-do_configure[noexec] = "1"
-
-export CMAKE_C_FLAGS = "\
-    -std=c99 \
-    -DTPM_NO_EXTERN \
-    ${STUBDOM_CPPFLAGS} \
-    ${STUBDOM_CFLAGS} \
-    -Wno-declaration-after-statement \
-    -Wno-implicit-fallthrough \
-"
-
-do_compile() {
-    CC="${HOST_PREFIX}gcc --sysroot=${RECIPE_SYSROOT}" cmake .. -DCMAKE_C_FLAGS:STRING="${CMAKE_C_FLAGS}"
-    ${MAKE} VERBOSE=1 tpm_crypto tpm
-}
-
-do_install() {
-    install -d ${D}/${libdir}
-    install -m 644 -t ${D}/${libdir} ${B}/crypto/libtpm_crypto.a
-    install -m 644 -t ${D}/${libdir} ${B}/tpm/libtpm.a
-
-    install -D -m 644 -t ${D}/${includedir}/tpm-emulator/build ${S}/build/config.h
-    install -D -m 644 -t ${D}/${includedir}/tpm-emulator/crypto ${S}/crypto/*.h
-    install -D -m 644 -t ${D}/${includedir}/tpm-emulator/tpm ${S}/tpm/*.h
-}
diff --git a/import-layers/meta-virtualization/recipes-extended/xen/tpm-emulator_0.7.4.bb b/import-layers/meta-virtualization/recipes-extended/xen/tpm-emulator_0.7.4.bb
deleted file mode 100644
index f626929..0000000
--- a/import-layers/meta-virtualization/recipes-extended/xen/tpm-emulator_0.7.4.bb
+++ /dev/null
@@ -1,26 +0,0 @@
-# Copyright (C) 2017 Kurt Bodiker <kurt.bodiker@braintrust-us.com>
-# Released under the MIT license (see COPYING.MIT for the terms)
-
-DESCRIPTION = "TPM Emulator"
-HOMEPAGE = "http://xenbits.xen.org/xen-extfiles"
-LICENSE = "GPLv2"
-LIC_FILES_CHKSUM = "file://README;md5=eeabd77cf8fd8a8bc42983884cb09863"
-
-SRC_URI = "\
-    http://xenbits.xen.org/xen-extfiles/tpm_emulator-${PV}.tar.gz;name=tpm-emulator \
-    file://tpmemu-0.7.4.patch \
-    file://vtpm-bufsize.patch \
-    file://vtpm-locality.patch \
-    file://vtpm-parent-sign-ek.patch \
-    file://vtpm-deepquote.patch \
-    file://vtpm-deepquote-anyloc.patch \
-    file://vtpm-cmake-Wextra.patch \
-    file://vtpm-implicit-fallthrough.patch \
-"
-SRC_URI[tpm-emulator.md5sum] = "e26becb8a6a2b6695f6b3e8097593db8"
-SRC_URI[tpm-emulator.sha256sum] = "4e48ea0d83dd9441cc1af04ab18cd6c961b9fa54d5cbf2c2feee038988dea459"
-
-S="${WORKDIR}/tpm_emulator-${PV}"
-B="${S}/build"
-
-require tpm-emulator.inc
diff --git a/import-layers/meta-virtualization/recipes-extended/xen/xen-arch.inc b/import-layers/meta-virtualization/recipes-extended/xen/xen-arch.inc
deleted file mode 100644
index fb0093e..0000000
--- a/import-layers/meta-virtualization/recipes-extended/xen/xen-arch.inc
+++ /dev/null
@@ -1,18 +0,0 @@
-
-valid_xen_archs = " \
-        x86_64 x86_32 \
-        arm32 arm64 \
-        "
-
-def map_xen_arch(a, d):
-    import re
-    valid_archs = d.getVar('valid_xen_archs').split()
-
-    if   re.match("i.86", a):        return "x86_32"
-    elif re.match("x86.64", a):      return "x86_64"
-    elif re.match("arm.*", a):       return "arm32"
-    elif re.match("aarch64.*", a):   return "arm64"
-    elif a in valid_archs:           return a
-    else:
-        return "INVALID"
-
diff --git a/import-layers/meta-virtualization/recipes-extended/xen/xen-vtpm.inc b/import-layers/meta-virtualization/recipes-extended/xen/xen-vtpm.inc
deleted file mode 100644
index a94c750..0000000
--- a/import-layers/meta-virtualization/recipes-extended/xen/xen-vtpm.inc
+++ /dev/null
@@ -1,111 +0,0 @@
-# Copyright (C) 2017 Kurt Bodiker <kurt.bodiker@braintrust-us.com>
-# Released under the MIT license (see COPYING.MIT for the terms)
-
-require stubdom.inc
-
-DEPENDS = "\
-    newlib \
-    lwip \
-    mini-os \
-    polarssl \
-    stubdom-gmp \
-    tpm-emulator \
-"
-# These were unset by stubdom.inc to allow us to scope them per recipe
-export CC="${HOST_PREFIX}gcc --sysroot=${RECIPE_SYSROOT}"
-export CCLD="${HOST_PREFIX}gcc --sysroot=${RECIPE_SYSROOT}"
-export CXX="${HOST_PREFIX}g++ --sysroot=${RECIPE_SYSROOT}"
-export CPP="${HOST_PREFIX}gcc -E --sysroot=${RECIPE_SYSROOT}"
-export LD="${HOST_PREFIX}ld --sysroot=${RECIPE_SYSROOT}"
-export LD_LTO="${HOST_PREFIX}ld --sysroot=${RECIPE_SYSROOT}"
-export AS="${HOST_PREFIX}as"
-export AR="${HOST_PREFIX}ar"
-export NM="${HOST_PREFIX}nm"
-export RANLIB="${HOST_PREFIX}ranlib"
-export OBJDUMP="${HOST_PREFIX}objdump"
-export OBJCOPY="${HOST_PREFIX}objcopy"
-export STRIP="${HOST_PREFIX}strip"
-export STRINGS="${HOST_PREFIX}strings"
-export READELF="${HOST_PREFIX}readelf"
-
-
-# Required for some of the config stuff
-export STUBDOM_TARGETS="vtpm vtpmmgr"
-
-VTPM_CPPFLAGS = "\
-    -I${RECIPE_SYSROOT}/cross-root-${GNU_TARGET_ARCH}/${GNU_TARGET_ARCH}-xen-elf/include/tpm-emulator/build \
-    -I${RECIPE_SYSROOT}/cross-root-${GNU_TARGET_ARCH}/${GNU_TARGET_ARCH}-xen-elf/include/tpm-emulator/crypto \
-    -I${RECIPE_SYSROOT}/cross-root-${GNU_TARGET_ARCH}/${GNU_TARGET_ARCH}-xen-elf/include/tpm-emulator/tpm \
-    -I${RECIPE_SYSROOT}/cross-root-${GNU_TARGET_ARCH}/${GNU_TARGET_ARCH}-xen-elf/include/tpm-emulator \
-"
-
-# The includes from this Xen directory are not in the MiniOS repo, although they probably should be.
-STUBDOM_CPPFLAGS += "-isystem ${B}/include/"
-
-do_configure() {
-
-    # GCC 7 fails linking header defined inlines if not declared 'static' or 'extern'
-    # This appears to be fixed in Xen 4.10.0+, so let's look at version of Xen source
-    # to determine if we need to modify inline declarations.
-    #
-    # 'echo -e' to enable interpretation of backslashes
-    # 'sort -V' to natural sort version numbers
-    # 'head -n1' to capture the first line of output from sort command
-
-    if [ "${PV}" = "$(echo "${PV};4.9.999" | sed 's/;/\n/' | sort -V | head -n1)" ]; then
-        sed -i "s/^inline/static inline/g" ${B}/vtpmmgr/*.h
-    fi
-
-    for i in AR AS NM RANLIB OBJDUMP OBJCOPY STRIP STRINGS READELF CXX LD LD_LTO CC CPP; do
-        sed -i "s/^\($i\s\s*\).*=/\1?=/" ${MINIOS_SRCDIR}/Config.mk
-    done
-
-    # replicate the TARGETS_MINIOS target in xen/stubdom/Makefile
-    for i in ${STUBDOM_TARGETS}; do
-        [ -d ${B}/mini-os-${XEN_TARGET_ARCH}-$i ] ||
-        for j in $(cd ${MINIOS_SRCDIR} ; find . -type d) ; do \
-                mkdir -p ${B}/mini-os-${XEN_TARGET_ARCH}-$i/$j; \
-        done
-    done
-}
-
-do_compile() {
-    ${MAKE} MINIOS_CONFIG="${B}/vtpm/minios.cfg" CONFIG_FILE="${B}/vtpm-minios-config.mk" DESTDIR= -C ${MINIOS_SRCDIR} config
-    CPPFLAGS="`cat ${B}/vtpm-minios-config.mk` ${STUBDOM_CPPFLAGS} ${VTPM_CPPFLAGS}" CFLAGS="${STUBDOM_CFLAGS}" ${MAKE} -C ${B}/vtpm
-    DEF_CPPFLAGS="${STUBDOM_CPPFLAGS}" \
-        DEF_CFLAGS="${STUBDOM_CFLAGS}" \
-        DEF_LDFLAGS="${STUBDOM_LDFLAGS}" \
-        MINIOS_CONFIG="${B}/vtpm/minios.cfg" \
-        ${MAKE} -C ${MINIOS_SRCDIR} \
-        OBJ_DIR=${B}/mini-os-${XEN_TARGET_ARCH}-vtpm \
-        APP_OBJS="${B}/vtpm/vtpm.a" \
-        APP_LDLIBS="-ltpm -ltpm_crypto -lgmp -lpolarssl"
-
-    ${MAKE} MINIOS_CONFIG="${B}/vtpmmgr/minios.cfg" CONFIG_FILE="${B}/vtpmmgr-minios-config.mk" DESTDIR= -C ${MINIOS_SRCDIR} config
-    CPPFLAGS="`cat ${B}/vtpmmgr-minios-config.mk` ${STUBDOM_CPPFLAGS}" CFLAGS="${STUBDOM_CFLAGS}" ${MAKE} -C ${B}/vtpmmgr
-    DEF_CPPFLAGS="${STUBDOM_CPPFLAGS}" \
-        DEF_CFLAGS="${STUBDOM_CFLAGS}" \
-        DEF_LDFLAGS="${STUBDOM_LDFLAGS}" \
-        MINIOS_CONFIG="${B}/vtpmmgr/minios.cfg" \
-        ${MAKE} -C ${MINIOS_SRCDIR} \
-        OBJ_DIR=${B}/mini-os-${XEN_TARGET_ARCH}-vtpmmgr \
-        APP_OBJS="${B}/vtpmmgr/vtpmmgr.a" \
-        APP_LDLIBS="-lm -lpolarssl"
-}
-
-PACKAGES = "\
-    ${PN}-vtpm-stubdom \
-    ${PN}-vtpmmgr-stubdom \
-"
-FILES_${PN}-vtpm-stubdom="\
-    ${libdir}/xen/boot/vtpm-stubdom.gz \
-"
-
-FILES_${PN}-vtpmmgr-stubdom="\
-    ${libdir}/xen/boot/vtpmmgr-stubdom.gz \
-"
-
-do_install() {
-    install -m 644 -D ${B}/mini-os-${XEN_TARGET_ARCH}-vtpm/mini-os.gz ${D}${libdir}/xen/boot/vtpm-stubdom.gz
-    install -m 644 -D ${B}/mini-os-${XEN_TARGET_ARCH}-vtpmmgr/mini-os.gz ${D}${libdir}/xen/boot/vtpmmgr-stubdom.gz
-}
diff --git a/import-layers/meta-virtualization/recipes-extended/xen/xen-vtpm_4.9.0.bb b/import-layers/meta-virtualization/recipes-extended/xen/xen-vtpm_4.9.0.bb
deleted file mode 100644
index c58a02d..0000000
--- a/import-layers/meta-virtualization/recipes-extended/xen/xen-vtpm_4.9.0.bb
+++ /dev/null
@@ -1,21 +0,0 @@
-# Copyright (C) 2017 Kurt Bodiker <kurt.bodiker@braintrust-us.com>
-# Released under the MIT license (see COPYING.MIT for the terms)
-
-DESCRIPTION = "MiniOS-based vTPMs for Xen"
-HOMEPAGE = "https://www.xenproject.org"
-LICENSE = "GPLv2 & BSD-3-Clause"
-LIC_FILES_CHKSUM = "file://COPYING;md5=b1ceb1b03a49b202ee6f41ffd1ed0155 \
-                    file://vtpm/COPYING;md5=75a98062ab0322ded060d9026a1bda61 \
-"
-
-# git commit hash for Xen's RELEASE-4.9.0 tag
-SRCREV_xen = "c30bf55594a53fae8aae08aabf16fc192faad7da"
-SRC_URI = "\
-    git://xenbits.xen.org/xen.git;protocol=git;nobranch=1;name=xen;subpath=stubdom \
-    git://xenbits.xen.org/xen.git;protocol=git;nobranch=1;name=xen;destsuffix=stubdom/include;subpath=tools/xenstore/include \
-"
-
-S="${WORKDIR}/stubdom"
-B="${S}"
-
-require xen-vtpm.inc
diff --git a/import-layers/meta-virtualization/recipes-extended/xen/xen.inc b/import-layers/meta-virtualization/recipes-extended/xen/xen.inc
deleted file mode 100644
index 8dfe589..0000000
--- a/import-layers/meta-virtualization/recipes-extended/xen/xen.inc
+++ /dev/null
@@ -1,1049 +0,0 @@
-DESCRIPTION = "Xen hypervisor"
-HOMEPAGE = "http://xen.org"
-LICENSE = "GPLv2"
-SECTION = "console/tools"
-
-LIC_FILES_CHKSUM = "file://COPYING;md5=bbb4b1bdc2c3b6743da3c39d03249095"
-
-COMPATIBLE_HOST = '(x86_64.*).*-linux|aarch64.*-linux'
-
-inherit autotools-brokensep setuptools update-rc.d systemd deploy
-
-require xen-arch.inc
-
-PACKAGECONFIG ??= " \
-    sdl \
-    ${@bb.utils.contains('DISTRO_FEATURES', 'systemd', 'systemd', '', d)} \
-    ${@bb.utils.contains('XEN_TARGET_ARCH', 'x86_64', 'hvm', '', d)} \
-    "
-
-FLASK_POLICY_FILE ?= "xenpolicy-${PV}"
-
-PACKAGECONFIG[sdl] = "--enable-sdl,--disable-sdl,virtual/libsdl,"
-PACKAGECONFIG[xsm] = "--enable-xsmpolicy,--disable-xsmpolicy,checkpolicy-native,"
-PACKAGECONFIG[systemd] = "--enable-systemd,--disable-systemd,systemd,"
-PACKAGECONFIG[hvm] = "--with-system-seabios="/usr/share/firmware/bios.bin",--disable-seabios,seabios ipxe vgabios,"
-
-DEPENDS = " \
-    bison-native \
-    dev86-native \
-    flex-native \
-    file-native \
-    gettext-native \
-    iasl-native \
-    ncurses-native \
-    util-linux-native \
-    xz-native \
-    bridge-utils \
-    curl \
-    dtc \
-    gettext \
-    glib-2.0 \
-    gnutls \
-    iproute2 \
-    libnl \
-    ncurses \
-    openssl \
-    pciutils \
-    pixman \
-    procps \
-    python \
-    libaio \
-    lzo \
-    util-linux \
-    xz \
-    yajl \
-    zlib \
-    gnu-efi \
-    "
-
-# inherit setuptools adds python to RDEPENDS, override it
-RDEPENDS_${PN} = ""
-
-RDEPENDS_${PN}-base = "\
-    bash perl xz \
-    ${PN}-console \
-    ${PN}-libxenguest \
-    ${PN}-libxenlight \
-    ${PN}-libxenvchan \
-    ${PN}-libxenctrl \
-    ${PN}-libxlutil \
-    ${PN}-libxenstat \
-    ${PN}-libxenstore \
-    ${PN}-libfsimage \
-    ${PN}-fsimage \
-    ${PN}-scripts-block \
-    ${PN}-scripts-network \
-    ${PN}-xen-watchdog \
-    ${PN}-xencommons \
-    ${PN}-xendomains \
-    ${PN}-xenstore \
-    ${PN}-xenstored \
-    ${PN}-xl \
-    "
-
-RDEPENDS_${PN}-dev = ""
-
-RRECOMMENDS_${PN}-base = " \
-    ${PN}-blktap \
-    ${PN}-libblktap \
-    ${PN}-libblktapctl \
-    ${PN}-libvhd \
-    ${PN}-flask \
-    ${PN}-hvmloader \
-    ${PN}-xenpaging \
-    "
-
-RDEPENDS_${PN}-devd = " \
-    ${PN}-xl \
-    "
-
-RDEPENDS_${PN}-fsimage = " \
-    libext2fs \
-    "
-
-RDEPENDS_${PN}-misc = " \
-    perl \
-    python \
-    "
-
-RDEPENDS_${PN}-remus = " \
-    bash \
-    python \
-    "
-
-RDEPENDS_${PN}-scripts-block = "\
-    bash \
-    ${PN}-scripts-common \
-    ${PN}-volatiles \
-    "
-
-RDEPENDS_${PN}-scripts-common = "bash"
-
-RDEPENDS_${PN}-scripts-network = "\
-    bash \
-    bridge-utils \
-    ${PN}-scripts-common \
-    ${PN}-volatiles \
-    "
-
-RDEPENDS_${PN}-xencommons = "\
-    bash \
-    ${PN}-console \
-    ${PN}-xenstore \
-    ${PN}-xenstored \
-    ${PN}-xl \
-    ${PN}-scripts-common \
-    "
-
-RDEPENDS_${PN}-xendomains = "\
-    bash \
-    ${PN}-console \
-    ${PN}-scripts-block \
-    ${PN}-scripts-common \
-    ${PN}-xenstored \
-    "
-
-RDEPENDS_${PN}-xl = "libgcc"
-
-RDEPENDS_${PN}-xentrace = "python"
-
-RDEPENDS_${PN}-xen-watchdog = "bash"
-
-PACKAGES = "\
-    ${PN}-base \
-    ${PN}-blktap \
-    ${PN}-console \
-    ${PN}-cpuid \
-    ${PN}-dbg \
-    ${PN}-dev \
-    ${PN}-devd \
-    ${PN}-doc \
-    ${PN}-efi \
-    ${PN}-flask \
-    ${PN}-flask-tools \
-    ${PN}-fsimage \
-    ${PN}-gdbsx \
-    ${PN}-hvmloader \
-    ${PN}-hypervisor \
-    ${PN}-init-xenstore-dom \
-    ${PN}-kdd \
-    ${PN}-libblktap \
-    ${PN}-libblktapctl \
-    ${PN}-libblktapctl-dev \
-    ${PN}-libblktap-dev \
-    ${PN}-libfsimage \
-    ${PN}-libfsimage-dev \
-    ${PN}-libvhd \
-    ${PN}-libvhd-dev \
-    ${PN}-libxencall \
-    ${PN}-libxencall-dev \
-    ${PN}-libxenctrl \
-    ${PN}-libxenctrl-dev \
-    ${PN}-libxendevicemodel \
-    ${PN}-libxendevicemodel-dev \
-    ${PN}-libxenevtchn \
-    ${PN}-libxenevtchn-dev \
-    ${PN}-libxenforeignmemory \
-    ${PN}-libxenforeignmemory-dev \
-    ${PN}-libxengnttab \
-    ${PN}-libxengnttab-dev \
-    ${PN}-libxenguest \
-    ${PN}-libxenguest-dev \
-    ${PN}-libxenlight \
-    ${PN}-libxenlight-dev \
-    ${PN}-libxenstat \
-    ${PN}-libxenstat-dev \
-    ${PN}-libxenstore \
-    ${PN}-libxenstore-dev \
-    ${PN}-libxentoolcore \
-    ${PN}-libxentoolcore-dev \
-    ${PN}-libxentoollog \
-    ${PN}-libxentoollog-dev \
-    ${PN}-libxenvchan \
-    ${PN}-libxenvchan-dev \
-    ${PN}-libxlutil \
-    ${PN}-libxlutil-dev \
-    ${PN}-livepatch \
-    ${PN}-misc \
-    ${PN}-pygrub \
-    ${PN}-python \
-    ${PN}-qemu \
-    ${PN}-remus \
-    ${PN}-scripts-block \
-    ${PN}-scripts-common \
-    ${PN}-scripts-network \
-    ${PN}-staticdev \
-    ${PN}-volatiles \
-    ${PN}-xcutils \
-    ${PN}-xencommons \
-    ${PN}-xend \
-    ${PN}-xend-examples \
-    ${PN}-xendomains \
-    ${PN}-xenmon \
-    ${PN}-xenpaging \
-    ${PN}-xenpmd \
-    ${PN}-xenstat \
-    ${PN}-xenstore \
-    ${PN}-xenstored \
-    ${PN}-xentrace \
-    ${PN}-xen-watchdog \
-    ${PN}-xl \
-    ${PN}-xl-examples \
-    ${PN}-xm \
-    ${PN}-xm-examples \
-    "
-
-FILES_${PN}-dbg += "\
-    ${libdir}/.debug \
-    ${libdir}/debug/* \
-    ${libdir}/xen/bin/.debug \
-    ${libdir}/python2.7/site-packages/.debug \
-    ${libdir}/python2.7/site-packages/xen/lowlevel/.debug \
-    ${libdir}/fs/xfs/.debug \
-    ${libdir}/fs/ufs/.debug \
-    ${libdir}/fs/ext2fs-lib/.debug \
-    ${libdir}/fs/fat/.debug \
-    ${libdir}/fs/zfs/.debug \
-    ${libdir}/fs/reiserfs/.debug \
-    ${libdir}/fs/iso9660/.debug \
-    ${libdir}/fs/*/.debug \
-    ${sbindir}/.debug \
-    ${libdir}exec/.debug \
-    ${libdir}/xen/libexec/.debug \
-    ${bindir}/.debug \
-    ${libdir}/python2.7/dist-packages/.debug \
-    ${libdir}/python2.7/dist-packages/xen/lowlevel/.debug \
-    "
-
-FILES_${PN}-dev = "\
-    ${includedir} \
-    "
-
-FILES_${PN}-doc = "\
-    ${sysconfdir}/xen/README \
-    ${sysconfdir}/xen/README.incompatibilities \
-    ${datadir}/doc \
-    ${datadir}/man \
-    "
-
-FILES_${PN}-staticdev += "\
-    ${libdir}/libblktapctl.a \
-    ${libdir}/libxenguest.a \
-    ${libdir}/libxenlight.a \
-    ${libdir}/libxenvchan.a \
-    ${libdir}/libxenctrl.a \
-    ${libdir}/libxlutil.a \
-    ${libdir}/libvhd.a \
-    ${libdir}/libxenstat.a \
-    ${libdir}/libxenstore.a \
-    ${libdir}/libblktap.a \
-    "
-
-FILES_${PN}-libblktapctl = "${libdir}/libblktapctl.so.*"
-FILES_${PN}-libblktapctl-dev = " \
-    ${libdir}/libblktapctl.so \
-    ${datadir}/pkgconfig/xenblktapctl.pc \
-    "
-
-FILES_${PN}-libxencall = "${libdir}/libxencall.so.*"
-FILES_${PN}-libxencall-dev = " \
-    ${libdir}/libxencall.so \
-    ${datadir}/pkgconfig/xencall.pc \
-    "
-
-FILES_${PN}-libxenctrl = "${libdir}/libxenctrl.so.*"
-FILES_${PN}-libxenctrl-dev = " \
-    ${libdir}/libxenctrl.so \
-    ${datadir}/pkgconfig/xencontrol.pc \
-    "
-
-FILES_${PN}-libxendevicemodel = "${libdir}/libxendevicemodel.so.*"
-FILES_${PN}-libxendevicemodel-dev = " \
-    ${libdir}/libxendevicemodel.so \
-    ${datadir}/pkgconfig/xendevicemodel.pc \
-    "
-
-FILES_${PN}-libxenevtchn = "${libdir}/libxenevtchn.so.*"
-FILES_${PN}-libxenevtchn-dev = " \
-    ${libdir}/libxenevtchn.so \
-    ${datadir}/pkgconfig/xenevtchn.pc \
-    "
-
-FILES_${PN}-libxenforeignmemory = "${libdir}/libxenforeignmemory.so.*"
-FILES_${PN}-libxenforeignmemory-dev = " \
-    ${libdir}/libxenforeignmemory.so \
-    ${datadir}/pkgconfig/xenforeignmemory.pc \
-    "
-
-FILES_${PN}-libxengnttab = "${libdir}/libxengnttab.so.*"
-FILES_${PN}-libxengnttab-dev = " \
-    ${libdir}/libxengnttab.so \
-    ${datadir}/pkgconfig/xengnttab.pc \
-    "
-
-FILES_${PN}-libxenguest = "${libdir}/libxenguest.so.*"
-FILES_${PN}-libxenguest-dev = " \
-    ${libdir}/libxenguest.so \
-    ${datadir}/pkgconfig/xenguest.pc \
-    "
-
-FILES_${PN}-libxenlight = "${libdir}/libxenlight.so.*"
-FILES_${PN}-libxenlight-dev = " \
-    ${libdir}/libxenlight.so \
-    ${datadir}/pkgconfig/xenlight.pc \
-    "
-
-FILES_${PN}-libxenstat = "${libdir}/libxenstat.so.*"
-FILES_${PN}-libxenstat-dev = " \
-    ${libdir}/libxenstat.so \
-    ${datadir}/pkgconfig/xenstat.pc \
-    "
-
-FILES_${PN}-libxenstore = "${libdir}/libxenstore.so.*"
-FILES_${PN}-libxenstore-dev = " \
-    ${libdir}/libxenstore.so \
-    ${datadir}/pkgconfig/xenstore.pc \
-    "
-
-FILES_${PN}-libxentoolcore = "${libdir}/libxentoolcore.so.*"
-FILES_${PN}-libxentoolcore-dev = " \
-    ${libdir}/libxentoolcore.so \
-    ${datadir}/pkgconfig/xentoolcore.pc \
-    "
-
-FILES_${PN}-libxentoollog = "${libdir}/libxentoollog.so.*"
-FILES_${PN}-libxentoollog-dev = " \
-    ${libdir}/libxentoollog.so \
-    ${datadir}/pkgconfig/xentoollog.pc \
-    "
-
-FILES_${PN}-libxenvchan = "${libdir}/libxenvchan.so.*"
-FILES_${PN}-libxenvchan-dev = " \
-    ${libdir}/libxenvchan.so \
-    ${datadir}/pkgconfig/xenvchan.pc \
-    "
-
-FILES_${PN}-libxlutil = "${libdir}/libxlutil.so.*"
-FILES_${PN}-libxlutil-dev = " \
-    ${libdir}/libxlutil.so \
-    ${datadir}/pkgconfig/xlutil.pc \
-    "
-FILES_${PN}-libvhd = "${libdir}/libvhd.so.*"
-FILES_${PN}-libvhd-dev = " \
-    ${libdir}/libvhd.so \
-    ${datadir}/pkgconfig/vhd.pc \
-    "
-
-FILES_${PN}-libblktap = "${libdir}/libblktap.so.*"
-FILES_${PN}-libblktap-dev = " \
-    ${libdir}/libblktap.so \
-    ${datadir}/pkgconfig/blktap.pc \
-    "
-
-FILES_${PN}-libfsimage = "${libdir}/libfsimage.so.*"
-FILES_${PN}-libfsimage-dev = " \
-    ${libdir}/libfsimage.so \
-    ${datadir}/pkgconfig/fsimage.pc \
-    "
-
-FILES_${PN}-fsimage = "${libdir}/fs/*/*fsimage.so"
-
-FILES_${PN}-hypervisor = "\
-    /boot/xen-* \
-    /boot/xen \
-    /boot/xen-*.gz \
-    /boot/xen.gz \
-    /boot/xen-syms-* \
-    "
-
-FILES_${PN}-init-xenstore-dom = "${libdir}/xen/bin/init-xenstore-domain"
-
-FILES_${PN}-efi = "\
-    ${exec_prefix}/lib64 \
-    ${exec_prefix}/lib64/xen* \
-    "
-
-FILES_${PN}-base = "\
-    ${sysconfdir}/xen/auto \
-    ${sysconfdir}/xen/cpupool \
-    ${localstatedir}/xen/dump \
-    "
-
-FILES_${PN}-blktap = "\
-    ${sbindir}/blktapctrl \
-    ${sbindir}/img2qcow \
-    ${sbindir}/lock-util \
-    ${sbindir}/qcow2raw \
-    ${sbindir}/qcow-create \
-    ${sbindir}/tap-ctl \
-    ${sbindir}/tapdisk \
-    ${sbindir}/tapdisk2 \
-    ${sbindir}/tapdisk-client \
-    ${sbindir}/tapdisk-diff \
-    ${sbindir}/tapdisk-stream \
-    ${sbindir}/td-util \
-    ${sbindir}/vhd-update \
-    ${sbindir}/vhd-util \
-    "
-
-FILES_${PN}-console = "\
-    ${libdir}/xen/bin/xenconsole \
-    ${sbindir}/xenconsoled \
-    "
-
-FILES_${PN}-cpuid = "\
-    ${bindir}/xen-cpuid \
-    "
-
-FILES_${PN}-devd = "\
-    ${sysconfdir}/init.d/xendriverdomain \
-    "
-
-FILES_${PN}-flask = "\
-    /boot/${FLASK_POLICY_FILE} \
-    "
-
-FILES_${PN}-flask-tools = "\
-    ${sbindir}/flask-get-bool \
-    ${sbindir}/flask-getenforce \
-    ${sbindir}/flask-label-pci \
-    ${sbindir}/flask-loadpolicy \
-    ${sbindir}/flask-set-bool \
-    ${sbindir}/flask-setenforce \
-    "
-
-FILES_${PN}-gdbsx = "\
-    ${sbindir}/gdbsx \
-    "
-
-INSANE_SKIP_${PN}-hvmloader = "arch"
-FILES_${PN}-hvmloader = "\
-    ${libdir}/xen/boot/hvmloader \
-    "
-
-FILES_${PN}-kdd = "\
-    ${sbindir}/kdd \
-    "
-
-FILES_${PN}-livepatch += " \
-    ${sbindir}/xen-livepatch \
-    "
-
-FILES_${PN}-misc = "\
-    ${bindir}/xencons \
-    ${bindir}/xencov_split \
-    ${bindir}/xen-detect \
-    ${libdir}/xen/bin/xenpvnetboot \
-    ${sbindir}/gtracestat \
-    ${sbindir}/gtraceview \
-    ${sbindir}/xen-bugtool \
-    ${sbindir}/xencov \
-    ${sbindir}/xenperf \
-    ${sbindir}/xenpm \
-    ${sbindir}/xsview \
-    ${sbindir}/xen-diag \
-    ${sbindir}/xen-tmem-list-parse \
-    ${sbindir}/xen-python-path \
-    ${sbindir}/xen-ringwatch \
-    ${sbindir}/xen-hptool \
-    ${sbindir}/xen-hvmcrash \
-    ${sbindir}/xen-hvmctx \
-    ${sbindir}/xenlockprof \
-    ${sbindir}/xen-lowmemd \
-    ${sbindir}/xen-mfndump \
-    ${libdir}/xen/bin/verify-stream-v2 \
-    ${libdir}/xen/bin/convert-legacy-stream \
-    "
-
-FILES_${PN}-pygrub = "\
-    ${bindir}/pygrub \
-    ${libdir}/xen/bin/pygrub \
-    "
-
-FILES_${PN}-python = "\
-    ${libdir}/python2.7 \
-    "
-
-INSANE_SKIP_${PN} = "already-stripped"
-INSANE_SKIP_${PN}-qemu = "arch"
-FILES_${PN}-qemu = " \
-    ${datadir}/xen/qemu \
-    ${libdir}/xen/bin/qemu-system-i386 \
-    ${libdir}/xen/bin/qemu-system-x86_64 \
-    ${libdir}/xen/bin/qemu-img \
-    ${libdir}/xen/bin/qemu-nbd \
-    ${libdir}/xen/bin/qemu-ga \
-    ${libdir}/xen/bin/qemu-io \
-    ${libdir}/xen/bin/qemu-dm \
-    ${libdir}/xen/bin/virtfs-proxy-helper \
-    /usr/libexec/qemu-bridge-helper \
-    ${libdir}/xen/libexec/qemu-bridge-helper \
-    /usr/etc/qemu \
-    /usr/etc/qemu/target-x86_64.conf \
-    ${libdir}/xen/etc/qemu/target-x86_64.conf \
-    ${datadir}/qemu-xen \
-    ${datadir}/qemu-xen/qemu \
-    ${datadir}/qemu-xen/qemu/bamboo.dtb \
-    ${datadir}/qemu-xen/qemu/pxe-pcnet.rom \
-    ${datadir}/qemu-xen/qemu/vgabios-vmware.bin \
-    ${datadir}/qemu-xen/qemu/pxe-eepro100.rom \
-    ${datadir}/qemu-xen/qemu/pxe-e1000.rom \
-    ${datadir}/qemu-xen/qemu/openbios-ppc \
-    ${datadir}/qemu-xen/qemu/multiboot.bin \
-    ${datadir}/qemu-xen/qemu/vgabios-cirrus.bin \
-    ${datadir}/qemu-xen/qemu/bios.bin \
-    ${datadir}/qemu-xen/qemu/vgabios-stdvga.bin \
-    ${datadir}/qemu-xen/qemu/palcode-clipper \
-    ${datadir}/qemu-xen/qemu/pxe-ne2k_pci.rom \
-    ${datadir}/qemu-xen/qemu/spapr-rtas.bin \
-    ${datadir}/qemu-xen/qemu/slof.bin \
-    ${datadir}/qemu-xen/qemu/vgabios-qxl.bin \
-    ${datadir}/qemu-xen/qemu/pxe-rtl8139.rom \
-    ${datadir}/qemu-xen/qemu/openbios-sparc64 \
-    ${datadir}/qemu-xen/qemu/pxe-virtio.rom \
-    ${datadir}/qemu-xen/qemu/kvmvapic.bin \
-    ${datadir}/qemu-xen/qemu/openbios-sparc32 \
-    ${datadir}/qemu-xen/qemu/petalogix-s3adsp1800.dtb \
-    ${datadir}/qemu-xen/qemu/sgabios.bin \
-    ${datadir}/qemu-xen/qemu/linuxboot.bin \
-    ${datadir}/qemu-xen/qemu/qemu-icon.bmp \
-    ${datadir}/qemu-xen/qemu/ppc_rom.bin \
-    ${datadir}/qemu-xen/qemu/vgabios.bin \
-    ${datadir}/qemu-xen/qemu/s390-zipl.rom \
-    ${datadir}/qemu-xen/qemu/petalogix-ml605.dtb \
-    ${datadir}/qemu-xen/qemu/keymaps \
-    ${datadir}/qemu-xen/qemu/keymaps/common \
-    ${datadir}/qemu-xen/qemu/keymaps/th \
-    ${datadir}/qemu-xen/qemu/keymaps/is \
-    ${datadir}/qemu-xen/qemu/keymaps/en-gb \
-    ${datadir}/qemu-xen/qemu/keymaps/ar \
-    ${datadir}/qemu-xen/qemu/keymaps/fr-be \
-    ${datadir}/qemu-xen/qemu/keymaps/ru \
-    ${datadir}/qemu-xen/qemu/keymaps/hu \
-    ${datadir}/qemu-xen/qemu/keymaps/de-ch \
-    ${datadir}/qemu-xen/qemu/keymaps/no \
-    ${datadir}/qemu-xen/qemu/keymaps/fr \
-    ${datadir}/qemu-xen/qemu/keymaps/pl \
-    ${datadir}/qemu-xen/qemu/keymaps/fr-ca \
-    ${datadir}/qemu-xen/qemu/keymaps/de \
-    ${datadir}/qemu-xen/qemu/keymaps/fr-ch \
-    ${datadir}/qemu-xen/qemu/keymaps/bepo \
-    ${datadir}/qemu-xen/qemu/keymaps/lv \
-    ${datadir}/qemu-xen/qemu/keymaps/ja \
-    ${datadir}/qemu-xen/qemu/keymaps/da \
-    ${datadir}/qemu-xen/qemu/keymaps/lt \
-    ${datadir}/qemu-xen/qemu/keymaps/hr \
-    ${datadir}/qemu-xen/qemu/keymaps/es \
-    ${datadir}/qemu-xen/qemu/keymaps/modifiers \
-    ${datadir}/qemu-xen/qemu/keymaps/sl \
-    ${datadir}/qemu-xen/qemu/keymaps/it \
-    ${datadir}/qemu-xen/qemu/keymaps/nl \
-    ${datadir}/qemu-xen/qemu/keymaps/fo \
-    ${datadir}/qemu-xen/qemu/keymaps/mk \
-    ${datadir}/qemu-xen/qemu/keymaps/pt-br \
-    ${datadir}/qemu-xen/qemu/keymaps/tr \
-    ${datadir}/qemu-xen/qemu/keymaps/sv \
-    ${datadir}/qemu-xen/qemu/keymaps/fi \
-    ${datadir}/qemu-xen/qemu/keymaps/en-us \
-    ${datadir}/qemu-xen/qemu/keymaps/et \
-    ${datadir}/qemu-xen/qemu/keymaps/nl-be \
-    ${datadir}/qemu-xen/qemu/keymaps/pt \
-    ${bindir}/qemu-nbd-xen \
-    ${bindir}/qemu-img-xen \
-    "
-
-FILES_${PN}-remus = "\
-    ${bindir}/remus \
-    ${sysconfdir}/xen/scripts/remus-netbuf-setup \
-    "
-
-FILES_${PN}-scripts-network = " \
-    ${sysconfdir}/xen/scripts/colo-proxy-setup \
-    ${sysconfdir}/xen/scripts/network-bridge \
-    ${sysconfdir}/xen/scripts/network-nat \
-    ${sysconfdir}/xen/scripts/network-route \
-    ${sysconfdir}/xen/scripts/qemu-ifup \
-    ${sysconfdir}/xen/scripts/vif2 \
-    ${sysconfdir}/xen/scripts/vif-bridge \
-    ${sysconfdir}/xen/scripts/vif-common.sh \
-    ${sysconfdir}/xen/scripts/vif-nat \
-    ${sysconfdir}/xen/scripts/vif-openvswitch \
-    ${sysconfdir}/xen/scripts/vif-route \
-    ${sysconfdir}/xen/scripts/vif-setup \
-    "
-
-FILES_${PN}-scripts-block = " \
-    ${sysconfdir}/xen/scripts/blktap \
-    ${sysconfdir}/xen/scripts/block \
-    ${sysconfdir}/xen/scripts/block-common.sh \
-    ${sysconfdir}/xen/scripts/block-dummy \
-    ${sysconfdir}/xen/scripts/block-enbd \
-    ${sysconfdir}/xen/scripts/block-iscsi \
-    ${sysconfdir}/xen/scripts/block-nbd \
-    ${sysconfdir}/xen/scripts/block-drbd-probe \
-    ${sysconfdir}/xen/scripts/block-tap \
-    ${sysconfdir}/xen/scripts/vscsi \
-    "
-
-FILES_${PN}-scripts-common = " \
-    ${sysconfdir}/xen/scripts/external-device-migrate \
-    ${sysconfdir}/xen/scripts/hotplugpath.sh \
-    ${sysconfdir}/xen/scripts/locking.sh \
-    ${sysconfdir}/xen/scripts/logging.sh \
-    ${sysconfdir}/xen/scripts/xen-hotplug-cleanup \
-    ${sysconfdir}/xen/scripts/xen-hotplug-common.sh \
-    ${sysconfdir}/xen/scripts/xen-network-common.sh \
-    ${sysconfdir}/xen/scripts/xen-script-common.sh \
-    "
-
-FILES_${PN}-volatiles = "\
-    ${sysconfdir}/default/volatiles/99_xen \
-    ${sysconfdir}/tmpfiles.d/xen.conf \
-    "
-
-FILES_${PN}-xcutils = "\
-    ${libdir}/xen/bin/lsevtchn \
-    ${libdir}/xen/bin/readnotes \
-    ${libdir}/xen/bin/xc_restore \
-    ${libdir}/xen/bin/xc_save \
-    "
-
-FILES_${PN}-xend-examples = "\
-    ${sysconfdir}/xen/xend-config.sxp \
-    ${sysconfdir}/xen/xend-pci-permissive.sxp \
-    ${sysconfdir}/xen/xend-pci-quirks.sxp \
-    "
-
-FILES_${PN}-xenpaging = "\
-    ${libdir}/xen/bin/xenpaging \
-    ${localstatedir}/lib/xen/xenpaging \
-    "
-
-FILES_${PN}-xenpmd = "\
-    ${sbindir}/xenpmd \
-    "
-
-FILES_${PN}-xenstat = "\
-    ${sbindir}/xentop \
-    "
-
-FILES_${PN}-xenstore = "\
-    ${bindir}/xenstore \
-    ${bindir}/xenstore-chmod \
-    ${bindir}/xenstore-control \
-    ${bindir}/xenstore-exists \
-    ${bindir}/xenstore-list \
-    ${bindir}/xenstore-ls \
-    ${bindir}/xenstore-read \
-    ${bindir}/xenstore-rm \
-    ${bindir}/xenstore-watch \
-    ${bindir}/xenstore-write \
-    "
-
-FILES_${PN}-xenstored = "\
-    ${sbindir}/xenstored \
-    ${localstatedir}/lib/xenstored \
-    "
-
-FILES_${PN}-xentrace = "\
-    ${bindir}/xentrace \
-    ${bindir}/xentrace_format \
-    ${bindir}/xentrace_setsize \
-    ${libdir}/xen/bin/xenctx \
-    ${bindir}/xenalyze \
-    ${sbindir}/xentrace \
-    ${sbindir}/xentrace_setsize \
-    "
-
-FILES_${PN}-xen-watchdog = "\
-    ${sbindir}/xenwatchdogd \
-    ${sysconfdir}/init.d/xen-watchdog \
-    ${systemd_unitdir}/system/xen-watchdog.service \
-    "
-
-FILES_${PN}-xl = "\
-    ${sysconfdir}/bash_completion.d/xl.sh \
-    ${sysconfdir}/xen/xl.conf \
-    ${libdir}/xen/bin/libxl-save-helper \
-    ${sbindir}/xl \
-    ${libdir}/xen/bin/xen-init-dom0 \
-    "
-
-FILES_${PN}-xl-examples = "\
-    ${sysconfdir}/xen/xlexample.hvm \
-    ${sysconfdir}/xen/xlexample.pvlinux \
-    "
-
-FILES_${PN}-xm-examples = "\
-    ${sysconfdir}/xen/xmexample1 \
-    ${sysconfdir}/xen/xmexample2 \
-    ${sysconfdir}/xen/xmexample3 \
-    ${sysconfdir}/xen/xmexample.hvm \
-    ${sysconfdir}/xen/xmexample.hvm-stubdom \
-    ${sysconfdir}/xen/xmexample.nbd \
-    ${sysconfdir}/xen/xmexample.pv-grub \
-    ${sysconfdir}/xen/xmexample.vti \
-    "
-
-FILES_${PN}-xenmon = "\
-    ${sbindir}/xenbaked \
-    ${sbindir}/xentrace_setmask \
-    ${sbindir}/xenmon.py \
-    "
-
-FILES_${PN}-xm = "\
-    ${sysconfdir}/xen/xm-config.xml \
-    ${datadir}/xen/create.dtd \
-    ${sbindir}/xm \
-    "
-
-FILES_${PN}-xencommons += "\
-    ${sysconfdir}/default/xencommons \
-    ${sysconfdir}/init.d/xencommons \
-    ${sysconfdir}/xen/scripts/launch-xenstore \
-    ${systemd_unitdir}/modules-load.d/xen.conf \
-    ${systemd_unitdir}/system/proc-xen.mount \
-    ${systemd_unitdir}/system/xen-qemu-dom0-disk-backend.service \
-    ${systemd_unitdir}/system/xenconsoled.service \
-    ${systemd_unitdir}/system/xen-init-dom0.service \
-    ${systemd_unitdir}/system/xenstored.service \
-    ${systemd_unitdir}/system/var-lib-xenstored.mount \
-    "
-
-FILES_${PN}-xend += " \
-    ${sysconfdir}/init.d/xend \
-    ${sbindir}/xend \
-    "
-
-FILES_${PN}-xendomains += "\
-    ${libdir}/xen/bin/xendomains \
-    ${sysconfdir}/default/xendomains \
-    ${sysconfdir}/init.d/xendomains \
-    ${sysconfdir}/sysconfig/xendomains \
-    ${systemd_unitdir}/system/xendomains.service \
-    "
-
-# configure init.d scripts
-INITSCRIPT_PACKAGES = "${PN}-xend ${PN}-xencommons ${PN}-xen-watchdog ${PN}-xendomains ${PN}-devd"
-INITSCRIPT_NAME_${PN}-xencommons = "xencommons"
-INITSCRIPT_PARAMS_${PN}-xencommons = "defaults 80"
-INITSCRIPT_NAME_${PN}-xen-watchdog = "xen-watchdog"
-INITSCRIPT_PARAMS_${PN}-xen-watchdog = "defaults 81"
-INITSCRIPT_NAME_${PN}-xend = "xend"
-INITSCRIPT_PARAMS_${PN}-xend = "defaults 82"
-INITSCRIPT_NAME_${PN}-xendomains = "xendomains"
-INITSCRIPT_PARAMS_${PN}-xendomains = "defaults 83"
-INITSCRIPT_NAME_${PN}-devd = "xendriverdomain"
-INITSCRIPT_PARAMS_${PN}-devd = "defaults 82"
-
-# systemd packages
-SYSTEMD_PACKAGES = "${PN}-xen-watchdog ${PN}-xencommons ${PN}-xendomains"
-SYSTEMD_SERVICE_${PN}-xen-watchdog = "xen-watchdog.service"
-SYSTEMD_SERVICE_${PN}-xencommons = " \
-    proc-xen.mount \
-    var-lib-xenstored.mount \
-    xen-qemu-dom0-disk-backend.service \
-    xenconsoled.service \
-    xen-init-dom0.service \
-    xenstored.service \
-    "
-SYSTEMD_SERVICE_${PN}-xendomains = "xendomains.service"
-
-#### REQUIRED ENVIRONMENT VARIABLES ####
-export BUILD_SYS
-export HOST_SYS
-export STAGING_INCDIR
-export STAGING_LIBDIR
-
-# specify xen hypervisor to build/target
-export XEN_TARGET_ARCH = "${@map_xen_arch(d.getVar('TARGET_ARCH'), d)}"
-export XEN_COMPILE_ARCH = "${@map_xen_arch(d.getVar('BUILD_ARCH'), d)}"
-
-python () {
-    if d.getVar('XEN_TARGET_ARCH') == 'INVALID':
-        raise bb.parse.SkipPackage('Cannot map `%s` to a xen architecture' % d.getVar('TARGET_ARCH'))
-}
-
-# Yocto appends ${PN} to libexecdir by default and Xen appends 'xen' as well
-# the result is a nested xen/xen/ so let's avoid that by shunning Yocto's
-# extra ${PN} appended.
-libexecdir = "${libdir}"
-
-# hardcoded as Linux, as the only compatible hosts are Linux.
-export XEN_OS = "Linux"
-
-# this is used for the header (#!${bindir}/python) of the install python scripts
-export PYTHONPATH="${bindir}/python"
-export ac_cv_path_PYTHONPATH="${bindir}/python"
-
-# xen and seabios require HOSTCC and HOSTCXX set to cross-compile
-export HOSTCC="${BUILD_CC}"
-export HOSTCXX="${BUILD_CXX}"
-
-# make xen requires CROSS_COMPILE set by hand as it does not abide by ./configure
-export CROSS_COMPILE="${TARGET_PREFIX}"
-
-# overide LDFLAGS to allow xen to build without: "x86_64-oe-linux-ld: unrecognized option '-Wl,-O1'"
-export LDFLAGS=""
-
-# Yocto injects -mfpmath=sse for some machine types into the CFLAGS which
-# conflicts with -mno-sse so instead we strip -mfpmath=sse instead of
-# patching the build to be ok with this
-TUNE_CCARGS := "${@oe.utils.str_filter_out('-mfpmath=sse', '${TUNE_CCARGS}', d)}"
-
-EXTRA_OECONF += " \
-    --exec-prefix=/usr \
-    --prefix=/usr \
-    --host=${HOST_SYS} \
-    --with-systemd=${systemd_unitdir}/system \
-    --with-systemd-modules-load=${systemd_unitdir}/modules-load.d \
-    --disable-stubdom \
-    --disable-ioemu-stubdom \
-    --disable-pv-grub \
-    --disable-xenstore-stubdom \
-    --disable-rombios \
-    --disable-ocamltools \
-    --with-initddir=${INIT_D_DIR} \
-    --with-sysconfig-leaf-dir=default \
-    --with-system-qemu=/usr/bin/qemu-system-i386 \
-    --disable-qemu-traditional \
-    "
-
-EXTRA_OEMAKE += "STDVGA_ROM=${STAGING_DIR_HOST}/usr/share/firmware/vgabios-0.7a.bin"
-EXTRA_OEMAKE += "CIRRUSVGA_ROM=${STAGING_DIR_HOST}/usr/share/firmware/vgabios-0.7a.cirrus.bin"
-EXTRA_OEMAKE += "SEABIOS_ROM=${STAGING_DIR_HOST}/usr/share/firmware/bios.bin"
-EXTRA_OEMAKE += "ETHERBOOT_ROMS=${STAGING_DIR_HOST}/usr/share/firmware/rtl8139.rom"
-
-# prevent the Xen build scripts from fetching things during the build
-# all dependencies should be reflected in the Yocto recipe
-EXTRA_OEMAKE += "WGET=/bin/false"
-EXTRA_OEMAKE += "GIT=/bin/false"
-
-# check for XSM in package config to allow XSM_ENABLE to be set
-python () {
-    pkgconfig = d.getVar('PACKAGECONFIG')
-    if ('xsm') in pkgconfig.split():
-        d.setVar('XSM_ENABLED', '1')
-    else:
-        d.setVar('XSM_ENABLED', '0')
-}
-
-do_post_patch() {
-    # fixup AS/CC/CCP/etc variable within StdGNU.mk
-    for i in LD CC CPP CXX; do
-        sed -i "s/^\($i\s\s*\).*=/\1?=/" ${S}/config/StdGNU.mk
-    done
-    # fixup environment passing in some makefiles
-    sed -i 's#\(\w*\)=\(\$.\w*.\)#\1="\2"#' ${S}/tools/firmware/Makefile
-
-    # libsystemd-daemon -> libsystemd for newer systemd versions
-    sed -i 's#libsystemd-daemon#libsystemd#' ${S}/tools/configure
-}
-
-addtask post_patch after do_patch before do_configure
-
-do_stubs() {
-    # no stubs-32.h in our 64-bit sysroot - hack it into tools/include/gnu
-    if ! test -f ${STAGING_DIR_TARGET}/usr/include/gnu/stubs-32.h ; then
-        if test -f ${STAGING_DIR_TARGET}/usr/include/gnu/stubs-64.h ; then
-            test -d ${S}/tools/include/gnu || mkdir ${S}/tools/include/gnu
-            cat ${STAGING_DIR_TARGET}/usr/include/gnu/stubs-64.h | grep -v stub_bdflush | grep -v stub_getmsg | grep -v stub_putmsg > ${S}/tools/include/gnu/stubs-32.h
-            echo \#define __stub___kernel_cosl >> ${S}/tools/include/gnu/stubs-32.h
-            echo \#define __stub___kernel_sinl >> ${S}/tools/include/gnu/stubs-32.h
-            echo \#define __stub___kernel_tanl >> ${S}/tools/include/gnu/stubs-32.h
-        fi
-    fi
-}
-
-addtask stubs after do_configure before do_compile
-
-# Allow all hypervisor settings in a defconfig
-EXTRA_OEMAKE += "XEN_CONFIG_EXPERT=y"
-# Build release versions always. Technically since we track release
-# tarballs this always happens but occasionally people pull in patches
-# from staging that reverts this
-EXTRA_OEMAKE += "debug=n"
-
-do_configure() {
-
-    #./configure --enable-xsmpolicy does not set XSM_ENABLE must be done manually
-    if [ "${XSM_ENABLED}" = "1" ]; then
-        echo "XSM_ENABLE := y" > ${S}/.config
-    fi
-
-    if [ -f "${WORKDIR}/defconfig" ]; then
-        cp "${WORKDIR}/defconfig" "${B}/xen/.config" || \
-        bbfatal "Unable to copy defconfig to .config"
-    fi
-
-    # do configure
-    oe_runconf
-    if [ ! -e ${STAGING_INCDIR}/bits/long-double-32.h ]; then
-        cp ${STAGING_INCDIR}/bits/long-double-64.h ${STAGING_INCDIR}/bits/long-double-32.h
-    fi
-}
-
-do_compile() {
-    # workaround for build bug when CFLAGS is exported
-    # https://www.mail-archive.com/xen-devel@lists.xen.org/msg67822.html
-    unset CFLAGS
-    oe_runmake
-}
-
-do_install() {
-    oe_runmake DESTDIR="${D}" install
-
-    # remove installed volatiles
-    rm -rf ${D}${localstatedir}/run \
-        ${D}${localstatedir}/lock \
-        ${D}${localstatedir}/log \
-        ${D}${localstatedir}/volatile \
-        ${D}${localstatedir}/lib/xen
-
-    VOLATILE_DIRS=" \
-        ${localstatedir}/run/xenstored \
-        ${localstatedir}/run/xend \
-        ${localstatedir}/run/xend/boot \
-        ${localstatedir}/run/xen \
-        ${localstatedir}/log/xen \
-        ${localstatedir}/lock/xen \
-        ${localstatedir}/lock/subsys \
-        ${localstatedir}/lib/xen \
-        "
-
-    # install volatiles using populate_volatiles mechanism
-    install -d ${D}${sysconfdir}/default/volatiles
-    for i in $VOLATILE_DIRS; do
-        echo "d root root 0755 $i none"  >> ${D}${sysconfdir}/default/volatiles/99_xen
-    done
-
-    # workaround for xendomains script which searchs sysconfig if directory exists
-    install -d ${D}${sysconfdir}/sysconfig
-    ln -sf ${sysconfdir}/default/xendomains ${D}${sysconfdir}/sysconfig/xendomains
-
-    # systemd
-    if ${@bb.utils.contains('DISTRO_FEATURES', 'systemd', 'true', 'false', d)}; then
-        # install volatiles using systemd tmpfiles.d
-        install -d ${D}${sysconfdir}/tmpfiles.d
-        for i in $VOLATILE_DIRS; do
-            echo "d $i 0755 root root - -"  >> ${D}${sysconfdir}/tmpfiles.d/xen.conf
-        done
-    fi
-
-    # fixup default path to qemu-system-i386
-    sed -i 's#\(test -z "$QEMU_XEN" && QEMU_XEN=\).*$#\1"/usr/bin/qemu-system-i386"#' ${D}/etc/init.d/xencommons
-
-    if [ -e ${D}${systemd_unitdir}/system/xen-qemu-dom0-disk-backend.service ]; then
-        sed -i 's#ExecStart=.*qemu-system-i386\(.*\)$#ExecStart=/usr/bin/qemu-system-i386\1#' \
-            ${D}${systemd_unitdir}/system/xen-qemu-dom0-disk-backend.service
-    fi
-}
-
-pkg_postinst_${PN}-volatiles() {
-    if [ -z "$D" ]; then
-        if command -v systemd-tmpfiles >/dev/null; then
-            systemd-tmpfiles --create ${sysconfdir}/tmpfiles.d/xen.conf
-        elif [ -e ${sysconfdir}/init.d/populate-volatile.sh ]; then
-            ${sysconfdir}/init.d/populate-volatile.sh update
-        fi
-    fi
-}
-
-do_deploy() {
-    install -d ${DEPLOYDIR}
-
-    if [ -f ${D}/boot/xen ]; then
-        install -m 0644 ${D}/boot/xen ${DEPLOYDIR}/xen-${MACHINE}
-    fi
-
-    if [ -f ${D}/boot/xen.gz ]; then
-        install -m 0644 ${D}/boot/xen.gz ${DEPLOYDIR}/xen-${MACHINE}.gz
-    fi
-
-    if [ -f ${D}/usr/lib64/efi/xen.efi ]; then
-        install -m 0644 ${D}/usr/lib64/efi/xen.efi ${DEPLOYDIR}/xen-${MACHINE}.efi
-    fi
-
-    # Install the flask policy in the deploy directory if it exists
-    if [ -f ${D}/boot/${FLASK_POLICY_FILE} ]; then
-        install -m 0644 ${D}/boot/${FLASK_POLICY_FILE} ${DEPLOYDIR}
-        ln -sf ${FLASK_POLICY_FILE} ${DEPLOYDIR}/xenpolicy-${MACHINE}
-    fi
-}
-
-addtask deploy after do_populate_sysroot
-
-# Enable use of menuconfig directly from bitbake and also within the devshell
-OE_TERMINAL_EXPORTS += "HOST_EXTRACFLAGS HOSTLDFLAGS TERMINFO"
-HOST_EXTRACFLAGS = "${BUILD_CFLAGS} ${BUILD_LDFLAGS}"
-HOSTLDFLAGS = "${BUILD_LDFLAGS}"
-TERMINFO = "${STAGING_DATADIR_NATIVE}/terminfo"
-do_devshell[depends] += "ncurses-native:do_populate_sysroot"
-
-KCONFIG_CONFIG_COMMAND ??= "menuconfig"
-python do_menuconfig() {
-    import shutil
-
-    try:
-        mtime = os.path.getmtime("xen/.config")
-        shutil.copy("xen/.config", "xen/.config.orig")
-    except OSError:
-        mtime = 0
-
-    oe_terminal("${SHELL} -c \"cd xen; XEN_CONFIG_EXPERT=y make %s; if [ \$? -ne 0 ]; then echo 'Command failed.'; printf 'Press any key to continue... '; read r; fi\"" % d.getVar('KCONFIG_CONFIG_COMMAND'),
-        d.getVar('PN') + ' Configuration', d)
-
-    try:
-        newmtime = os.path.getmtime("xen/.config")
-    except OSError:
-        newmtime = 0
-
-    if newmtime > mtime:
-        bb.note("Configuration changed, recompile will be forced")
-        bb.build.write_taint('do_compile', d)
-}
-do_menuconfig[depends] += "ncurses-native:do_populate_sysroot"
-do_menuconfig[nostamp] = "1"
-do_menuconfig[dirs] = "${B}"
-addtask menuconfig after do_configure
diff --git a/import-layers/meta-virtualization/recipes-extended/xen/xen_4.10.0.bb b/import-layers/meta-virtualization/recipes-extended/xen/xen_4.10.0.bb
deleted file mode 100644
index d314b9b..0000000
--- a/import-layers/meta-virtualization/recipes-extended/xen/xen_4.10.0.bb
+++ /dev/null
@@ -1,12 +0,0 @@
-FILESEXTRAPATHS_prepend := "${THISDIR}/files:"
-require xen.inc
-
-SRC_URI = " \
-    https://downloads.xenproject.org/release/xen/${PV}/xen-${PV}.tar.gz \
-    file://xsa253.patch \
-    "
-
-SRC_URI[md5sum] = "ab9d320d02cb40f6b40506aed1a38d58"
-SRC_URI[sha256sum] = "0262a7023f8b12bcacfb0b25e69b2a63291f944f7683d54d8f33d4b2ca556844"
-
-S = "${WORKDIR}/xen-${PV}"
diff --git a/import-layers/meta-virtualization/recipes-extended/xen/xen_4.9.1.bb b/import-layers/meta-virtualization/recipes-extended/xen/xen_4.9.1.bb
deleted file mode 100644
index 5c18bb0..0000000
--- a/import-layers/meta-virtualization/recipes-extended/xen/xen_4.9.1.bb
+++ /dev/null
@@ -1,18 +0,0 @@
-FILESEXTRAPATHS_prepend := "${THISDIR}/files:"
-require xen.inc
-
-SRC_URI = " \
-    https://downloads.xenproject.org/release/xen/${PV}/xen-${PV}.tar.gz \
-    file://xsa246-4.9.patch \
-    file://0001-p2m-Always-check-to-see-if-removing-a-p2m-entry-actu.patch \
-    file://0002-p2m-Check-return-value-of-p2m_set_entry-when-decreas.patch \
-    file://xsa248.patch \
-    file://xsa249.patch \
-    file://xsa250.patch \
-    file://xsa251.patch \
-    "
-
-SRC_URI[md5sum] = "8b9d6104694b164d54334194135f7217"
-SRC_URI[sha256sum] = "ecf88b01f44cd8f4ef208af3f999dceb69bdd2a316d88dd9a9535ea7b49ed356"
-
-S = "${WORKDIR}/xen-${PV}"
diff --git a/import-layers/meta-virtualization/recipes-extended/xen/xen_git.bb b/import-layers/meta-virtualization/recipes-extended/xen/xen_git.bb
deleted file mode 100644
index e10d669..0000000
--- a/import-layers/meta-virtualization/recipes-extended/xen/xen_git.bb
+++ /dev/null
@@ -1,16 +0,0 @@
-require xen.inc
-
-SRCREV ?= "9a6cc4f5c14b3d7542b7523f88a1b65464733d3a"
-
-XEN_REL ?= "4.7"
-XEN_BRANCH ?= "staging-${XEN_REL}"
-
-PV = "${XEN_REL}+git${SRCPV}"
-
-S = "${WORKDIR}/git"
-
-SRC_URI = " \
-    git://xenbits.xen.org/xen.git;branch=${XEN_BRANCH} \
-    "
-
-DEFAULT_PREFERENCE = "-1"
diff --git a/import-layers/meta-virtualization/recipes-graphics/xorg-xserver/xserver-xorg_%.bbappend b/import-layers/meta-virtualization/recipes-graphics/xorg-xserver/xserver-xorg_%.bbappend
deleted file mode 100644
index 9503404..0000000
--- a/import-layers/meta-virtualization/recipes-graphics/xorg-xserver/xserver-xorg_%.bbappend
+++ /dev/null
@@ -1,13 +0,0 @@
-# Change the default Xserver OpenGL configuration for non-x86 distros with Xen: deselect 'glamor'.
-# This removes the dependency on libegl to simplify the domU build.
-#
-# To override this (eg. if wanted for dom0 images) define:
-#   REMOVED_OPENGL_PKGCONFIGS = ""
-
-XEN_REMOVED_OPENGL_PKGCONFIGS ?= "glamor"
-XEN_REMOVED_OPENGL_PKGCONFIGS_x86 = ""
-XEN_REMOVED_OPENGL_PKGCONFIGS_x86-64 = ""
-
-REMOVED_OPENGL_PKGCONFIGS ?= "${@bb.utils.contains('DISTRO_FEATURES', 'xen', "${XEN_REMOVED_OPENGL_PKGCONFIGS}", '', d)}"
-
-OPENGL_PKGCONFIGS_remove = "${REMOVED_OPENGL_PKGCONFIGS}"
diff --git a/import-layers/meta-virtualization/recipes-kernel/linux/linux-yocto/docker.cfg b/import-layers/meta-virtualization/recipes-kernel/linux/linux-yocto/docker.cfg
deleted file mode 100644
index 4ee8e36..0000000
--- a/import-layers/meta-virtualization/recipes-kernel/linux/linux-yocto/docker.cfg
+++ /dev/null
@@ -1,12 +0,0 @@
-CONFIG_NETFILTER_XT_MATCH_ADDRTYPE=m
-CONFIG_IP_NF_FILTER=m
-CONFIG_NF_NAT=m
-CONFIG_NF_CONNTRACK_IPV4=y
-
-CONFIG_DM_THIN_PROVISIONING=m
-
-
-CONFIG_IP_NF_NAT=m
-CONFIG_IP_NF_TARGET_MASQUERADE=m
-
-CONFIG_OVERLAY_FS=y
diff --git a/import-layers/meta-virtualization/recipes-kernel/linux/linux-yocto/docker.scc b/import-layers/meta-virtualization/recipes-kernel/linux/linux-yocto/docker.scc
deleted file mode 100644
index e317456..0000000
--- a/import-layers/meta-virtualization/recipes-kernel/linux/linux-yocto/docker.scc
+++ /dev/null
@@ -1,4 +0,0 @@
-define KFEATURE_DESCRIPTION "Enable Features needed by docker in addition to LXC features"
-define KFEATURE_COMPATIBILITY board
-
-kconf non-hardware docker.cfg
diff --git a/import-layers/meta-virtualization/recipes-kernel/linux/linux-yocto/ebtables.cfg b/import-layers/meta-virtualization/recipes-kernel/linux/linux-yocto/ebtables.cfg
deleted file mode 100644
index a3c514e..0000000
--- a/import-layers/meta-virtualization/recipes-kernel/linux/linux-yocto/ebtables.cfg
+++ /dev/null
@@ -1,2 +0,0 @@
-CONFIG_BRIDGE_NF_EBTABLES=m
-CONFIG_BRIDGE_EBT_T_NAT=m
diff --git a/import-layers/meta-virtualization/recipes-kernel/linux/linux-yocto/ebtables.scc b/import-layers/meta-virtualization/recipes-kernel/linux/linux-yocto/ebtables.scc
deleted file mode 100644
index b3895e5..0000000
--- a/import-layers/meta-virtualization/recipes-kernel/linux/linux-yocto/ebtables.scc
+++ /dev/null
@@ -1,4 +0,0 @@
-define KFEATURE_DESCRIPTION "Enable ebtables support"
-define KFEATURE_COMPATIBILITY board
-
-kconf non-hardware ebtables.cfg
diff --git a/import-layers/meta-virtualization/recipes-kernel/linux/linux-yocto/lxc.cfg b/import-layers/meta-virtualization/recipes-kernel/linux/linux-yocto/lxc.cfg
deleted file mode 100644
index c25d60f..0000000
--- a/import-layers/meta-virtualization/recipes-kernel/linux/linux-yocto/lxc.cfg
+++ /dev/null
@@ -1,46 +0,0 @@
-CONFIG_CGROUP_DEVICE=y
-CONFIG_CPUSETS=y
-CONFIG_PROC_PID_CPUSET=y
-CONFIG_RESOURCE_COUNTERS=y
-CONFIG_CGROUP_MEM_RES_CTLR=y
-CONFIG_CGROUP_SCHED=y
-CONFIG_FAIR_GROUP_SCHED=y
-CONFIG_RT_GROUP_SCHED=y
-CONFIG_CHECKPOINT_RESTORE=y
-CONFIG_NAMESPACES=y
-CONFIG_UTS_NS=y
-CONFIG_IPC_NS=y
-CONFIG_USER_NS=y
-CONFIG_PID_NS=y
-CONFIG_NET_NS=y
-
-CONFIG_CLS_CGROUP=m
-CONFIG_BLK_CGROUP=y
-CONFIG_NETPRIO_CGROUP=m
-
-CONFIG_DEVPTS_MULTIPLE_INSTANCES=y
-
-# Virtual drivers
-CONFIG_VIRTIO_BLK=y
-CONFIG_SCSI_VIRTIO=y
-CONFIG_VIRTIO_NET=m
-CONFIG_HVC_DRIVER=y
-CONFIG_VIRTIO_CONSOLE=y
-CONFIG_HW_RANDOM_VIRTIO=m
-CONFIG_VIRTIO=y
-CONFIG_VIRTIO_RING=y
-CONFIG_VIRTIO_PCI=y
-CONFIG_VIRTIO_BALLOON=y
-CONFIG_VIRTIO_MMIO=y
-
-
-# Base support for live boot
-CONFIG_BLK_DEV_LOOP=y
-CONFIG_NLS_CODEPAGE_437=y
-CONFIG_NLS_ISO8859_1=y
-CONFIG_VFAT_FS=y
-CONFIG_RD_GZIP=y
-
-# Support for virtual ethernet and LXC
-CONFIG_VETH=y
-CONFIG_MACVLAN=y
diff --git a/import-layers/meta-virtualization/recipes-kernel/linux/linux-yocto/lxc.scc b/import-layers/meta-virtualization/recipes-kernel/linux/linux-yocto/lxc.scc
deleted file mode 100644
index ee51883..0000000
--- a/import-layers/meta-virtualization/recipes-kernel/linux/linux-yocto/lxc.scc
+++ /dev/null
@@ -1,4 +0,0 @@
-define KFEATURE_DESCRIPTION "Enable Features needed by LxC, namespaces, cgroups et.c."
-define KFEATURE_COMPATIBILITY board
-
-kconf non-hardware lxc.cfg
diff --git a/import-layers/meta-virtualization/recipes-kernel/linux/linux-yocto/vswitch.cfg b/import-layers/meta-virtualization/recipes-kernel/linux/linux-yocto/vswitch.cfg
deleted file mode 100644
index b1fefc0..0000000
--- a/import-layers/meta-virtualization/recipes-kernel/linux/linux-yocto/vswitch.cfg
+++ /dev/null
@@ -1,3 +0,0 @@
-CONFIG_OPENVSWITCH=m
-CONFIG_NET_SCH_INGRESS=m
-CONFIG_NET_ACT_POLICE=m
diff --git a/import-layers/meta-virtualization/recipes-kernel/linux/linux-yocto/vswitch.scc b/import-layers/meta-virtualization/recipes-kernel/linux/linux-yocto/vswitch.scc
deleted file mode 100644
index 2790b4f..0000000
--- a/import-layers/meta-virtualization/recipes-kernel/linux/linux-yocto/vswitch.scc
+++ /dev/null
@@ -1,4 +0,0 @@
-define KFEATURE_DESCRIPTION "Enable in kernel OpenvSwitch module"
-define KFEATURE_COMPATIBILITY board
-
-kconf non-hardware vswitch.cfg
diff --git a/import-layers/meta-virtualization/recipes-kernel/linux/linux-yocto/xen.cfg b/import-layers/meta-virtualization/recipes-kernel/linux/linux-yocto/xen.cfg
deleted file mode 100644
index 4780311..0000000
--- a/import-layers/meta-virtualization/recipes-kernel/linux/linux-yocto/xen.cfg
+++ /dev/null
@@ -1,50 +0,0 @@
-CONFIG_HYPERVISOR_GUEST=y
-CONFIG_PARAVIRT=y
-CONFIG_XEN=y
-CONFIG_XEN_DOM0=y
-CONFIG_XEN_PVHVM=y
-CONFIG_XEN_MAX_DOMAIN_MEMORY=500
-CONFIG_XEN_SAVE_RESTORE=y
-# CONFIG_XEN_DEBUG_FS is not set
-CONFIG_XEN_PVH=y
-CONFIG_MMU_NOTIFIER=y
-CONFIG_HIBERNATE_CALLBACKS=y
-CONFIG_PCI_XEN=y
-CONFIG_XEN_PCIDEV_FRONTEND=y
-CONFIG_SYS_HYPERVISOR=y
-CONFIG_XEN_BLKDEV_FRONTEND=y
-CONFIG_XEN_BLKDEV_BACKEND=m
-CONFIG_XEN_SCSI_FRONTEND=m
-CONFIG_XEN_NETDEV_FRONTEND=y
-CONFIG_XEN_NETDEV_BACKEND=m
-CONFIG_INPUT_MISC=y
-CONFIG_INPUT_XEN_KBDDEV_FRONTEND=y
-CONFIG_HVC_IRQ=y
-CONFIG_HVC_XEN=y
-CONFIG_HVC_XEN_FRONTEND=y
-CONFIG_XEN_WDT=m
-CONFIG_FB_SYS_FILLRECT=y
-CONFIG_FB_SYS_COPYAREA=y
-CONFIG_FB_SYS_IMAGEBLIT=y
-CONFIG_FB_SYS_FOPS=y
-CONFIG_FB_DEFERRED_IO=y
-CONFIG_XEN_FBDEV_FRONTEND=y
-CONFIG_XEN_BALLOON=y
-CONFIG_XEN_SCRUB_PAGES=y
-CONFIG_XEN_DEV_EVTCHN=y
-CONFIG_XEN_BACKEND=y
-CONFIG_XENFS=y
-CONFIG_XEN_COMPAT_XENFS=y
-CONFIG_XEN_SYS_HYPERVISOR=y
-CONFIG_XEN_XENBUS_FRONTEND=y
-CONFIG_XEN_GNTDEV=m
-CONFIG_XEN_GRANT_DEV_ALLOC=m
-CONFIG_SWIOTLB_XEN=y
-CONFIG_XEN_PCIDEV_BACKEND=m
-CONFIG_XEN_PRIVCMD=y
-CONFIG_XEN_ACPI_PROCESSOR=m
-CONFIG_XEN_MCE_LOG=y
-CONFIG_XEN_HAVE_PVMMU=y
-CONFIG_XEN_EFI=y
-CONFIG_XEN_AUTO_XLATE=y
-CONFIG_XEN_ACPI=y
diff --git a/import-layers/meta-virtualization/recipes-kernel/linux/linux-yocto/xen.scc b/import-layers/meta-virtualization/recipes-kernel/linux/linux-yocto/xen.scc
deleted file mode 100644
index b588e5d..0000000
--- a/import-layers/meta-virtualization/recipes-kernel/linux/linux-yocto/xen.scc
+++ /dev/null
@@ -1,4 +0,0 @@
-define KFEATURE_DESCRIPTION "Xen Kernel Support"
-define KFEATURE_COMPATIBILITY arch
-
-kconf non-hardware xen.cfg
diff --git a/import-layers/meta-virtualization/recipes-kernel/linux/linux-yocto/xt-checksum.cfg b/import-layers/meta-virtualization/recipes-kernel/linux/linux-yocto/xt-checksum.cfg
deleted file mode 100644
index 58afbff..0000000
--- a/import-layers/meta-virtualization/recipes-kernel/linux/linux-yocto/xt-checksum.cfg
+++ /dev/null
@@ -1 +0,0 @@
-CONFIG_NETFILTER_XT_TARGET_CHECKSUM=m
diff --git a/import-layers/meta-virtualization/recipes-kernel/linux/linux-yocto/xt-checksum.scc b/import-layers/meta-virtualization/recipes-kernel/linux/linux-yocto/xt-checksum.scc
deleted file mode 100644
index d3804f0..0000000
--- a/import-layers/meta-virtualization/recipes-kernel/linux/linux-yocto/xt-checksum.scc
+++ /dev/null
@@ -1,4 +0,0 @@
-define KFEATURE_DESCRIPTION "Add extra iptables modules"
-define KFEATURE_COMPATIBILITY board
-
-kconf non-hardware xt-checksum.cfg
diff --git a/import-layers/meta-virtualization/recipes-kernel/linux/linux-yocto_4.12.bbappend b/import-layers/meta-virtualization/recipes-kernel/linux/linux-yocto_4.12.bbappend
deleted file mode 100644
index 617cacc..0000000
--- a/import-layers/meta-virtualization/recipes-kernel/linux/linux-yocto_4.12.bbappend
+++ /dev/null
@@ -1 +0,0 @@
-require ${@bb.utils.contains('DISTRO_FEATURES', 'virtualization', '${BPN}_virtualization.inc', '', d)}
diff --git a/import-layers/meta-virtualization/recipes-kernel/linux/linux-yocto_4.14.bbappend b/import-layers/meta-virtualization/recipes-kernel/linux/linux-yocto_4.14.bbappend
deleted file mode 100644
index 617cacc..0000000
--- a/import-layers/meta-virtualization/recipes-kernel/linux/linux-yocto_4.14.bbappend
+++ /dev/null
@@ -1 +0,0 @@
-require ${@bb.utils.contains('DISTRO_FEATURES', 'virtualization', '${BPN}_virtualization.inc', '', d)}
diff --git a/import-layers/meta-virtualization/recipes-kernel/linux/linux-yocto_4.15.bbappend b/import-layers/meta-virtualization/recipes-kernel/linux/linux-yocto_4.15.bbappend
deleted file mode 100644
index 617cacc..0000000
--- a/import-layers/meta-virtualization/recipes-kernel/linux/linux-yocto_4.15.bbappend
+++ /dev/null
@@ -1 +0,0 @@
-require ${@bb.utils.contains('DISTRO_FEATURES', 'virtualization', '${BPN}_virtualization.inc', '', d)}
diff --git a/import-layers/meta-virtualization/recipes-kernel/linux/linux-yocto_virtualization.inc b/import-layers/meta-virtualization/recipes-kernel/linux/linux-yocto_virtualization.inc
deleted file mode 100644
index 9905ed9..0000000
--- a/import-layers/meta-virtualization/recipes-kernel/linux/linux-yocto_virtualization.inc
+++ /dev/null
@@ -1,20 +0,0 @@
-FILESEXTRAPATHS_prepend := "${THISDIR}/linux-yocto:"
-
-SRC_URI += "file://xt-checksum.scc \
-            file://ebtables.scc \
-	    file://vswitch.scc \
-	    file://lxc.scc \
-            file://docker.scc \
-	    "
-KERNEL_FEATURES_append = " ${@bb.utils.contains('DISTRO_FEATURES', 'kvm', 'features/kvm/qemu-kvm-enable.scc', '', d)}"
-
-KERNEL_MODULE_AUTOLOAD += "openvswitch"
-KERNEL_MODULE_AUTOLOAD += "${@bb.utils.contains('DISTRO_FEATURES', 'kvm', 'kvm', '', d)}"
-KERNEL_MODULE_AUTOLOAD += "${@bb.utils.contains('DISTRO_FEATURES', 'kvm', 'kvm-amd', '', d)}"
-KERNEL_MODULE_AUTOLOAD += "${@bb.utils.contains('DISTRO_FEATURES', 'kvm', 'kvm-intel', '', d)}"
-
-# aufs kernel support required for xen-image-minimal
-KERNEL_FEATURES_append += "${@bb.utils.contains('DISTRO_FEATURES', 'aufs', ' features/aufs/aufs-enable.scc', '', d)}"
-
-# xen kernel support
-SRC_URI += "${@bb.utils.contains('DISTRO_FEATURES', 'xen', ' file://xen.scc', '', d)}"
diff --git a/import-layers/meta-virtualization/recipes-networking/cni/cni_git.bb b/import-layers/meta-virtualization/recipes-networking/cni/cni_git.bb
deleted file mode 100644
index 427a812..0000000
--- a/import-layers/meta-virtualization/recipes-networking/cni/cni_git.bb
+++ /dev/null
@@ -1,95 +0,0 @@
-HOMEPAGE = "https://github.com/containernetworking/cni"
-SUMMARY = "Container Network Interface - networking for Linux containers"
-DESCRIPTION = "CNI (Container Network Interface), a Cloud Native Computing \
-Foundation project, consists of a specification and libraries for writing \
-plugins to configure network interfaces in Linux containers, along with a \
-number of supported plugins. CNI concerns itself only with network connectivity \
-of containers and removing allocated resources when the container is deleted. \
-Because of this focus, CNI has a wide range of support and the specification \
-is simple to implement. \
-"
-
-SRCREV_cni = "4b9e11a5266fe50222ed00c5973c6ea4a384a4bb"
-SRCREV_plugins = "c238c93b5e7c681f1935ff813b30e82f96f6c367"
-SRC_URI = "\
-	git://github.com/containernetworking/cni.git;nobranch=1;name=cni \
-        git://github.com/containernetworking/plugins.git;nobranch=1;destsuffix=plugins;name=plugins \
-	"
-
-RPROVIDES_${PN} += "kubernetes-cni"
-
-LICENSE = "Apache-2.0"
-LIC_FILES_CHKSUM = "file://src/import/LICENSE;md5=fa818a259cbed7ce8bc2a22d35a464fc"
-
-GO_IMPORT = "import"
-
-PV = "0.6.0+git${SRCREV_cni}"
-
-inherit go
-inherit goarch
-
-do_compile() {
-	export GOARCH="${TARGET_GOARCH}"
-	export GOROOT="${STAGING_LIBDIR_NATIVE}/${TARGET_SYS}/go"
-	export GOPATH="${S}/src/import:${S}/src/import/vendor"
-
-	# Pass the needed cflags/ldflags so that cgo
-	# can find the needed headers files and libraries
-	export CGO_ENABLED="1"
-	export CFLAGS=""
-	export LDFLAGS=""
-	export CGO_CFLAGS="${BUILDSDK_CFLAGS} --sysroot=${STAGING_DIR_TARGET}"
-	export CGO_LDFLAGS="${BUILDSDK_LDFLAGS} --sysroot=${STAGING_DIR_TARGET}"
-
-	# link fixups for compilation
-	rm -f ${S}/src/import/vendor/src
-	ln -sf ./ ${S}/src/import/vendor/src
-	rm -rf ${S}/src/import/plugins
-	rm -rf ${S}/src/import/vendor/github.com/containernetworking/plugins
-
-	mkdir -p ${S}/src/import/vendor/github.com/containernetworking/cni
-
-	ln -sf ../../../../libcni ${S}/src/import/vendor/github.com/containernetworking/cni/libcni
-	ln -sf ../../../../pkg ${S}/src/import/vendor/github.com/containernetworking/cni/pkg
-	ln -sf ../../../../cnitool ${S}/src/import/vendor/github.com/containernetworking/cni/cnitool
-	ln -sf ${WORKDIR}/plugins ${S}/src/import/vendor/github.com/containernetworking/plugins
-
-	export GOPATH="${S}/src/import/.gopath:${S}/src/import/vendor:${STAGING_DIR_TARGET}/${prefix}/local/go"
-	export GOROOT="${STAGING_DIR_NATIVE}/${nonarch_libdir}/${HOST_SYS}/go"
-
-	# Pass the needed cflags/ldflags so that cgo
-	# can find the needed headers files and libraries
-	export CGO_ENABLED="1"
-	export CGO_CFLAGS="${CFLAGS} --sysroot=${STAGING_DIR_TARGET}"
-	export CGO_LDFLAGS="${LDFLAGS} --sysroot=${STAGING_DIR_TARGET}"
-
-	cd ${S}/src/import/vendor/github.com/containernetworking/cni/libcni
-	go build
-
-	cd ${S}/src/import/vendor/github.com/containernetworking/cni/cnitool
-	go build
-
-	cd ${S}/src/import/vendor/github.com/containernetworking/plugins/
-	PLUGINS="plugins/meta/* plugins/main/*"
-	mkdir -p ${WORKDIR}/plugins/bin/
-	for p in $PLUGINS; do
-	    plugin="$(basename "$p")"
-	    echo "building: $p"
-	    go build -o ${WORKDIR}/plugins/bin/$plugin github.com/containernetworking/plugins/$p
-	done
-}
-
-do_install() {
-    localbindir="/opt/cni/bin"
-
-    install -d ${D}${localbindir}
-    install -d ${D}/${sysconfdir}/cni/net.d
-
-    install -m 755 ${S}/src/import/cnitool/cnitool ${D}/${localbindir}
-    install -m 755 -D ${WORKDIR}/plugins/bin/* ${D}/${localbindir}
-}
-
-FILES_${PN} += "/opt/cni/bin/*"
-
-INHIBIT_PACKAGE_STRIP = "1"
-INSANE_SKIP_${PN} += "ldflags already-stripped"
diff --git a/import-layers/meta-virtualization/recipes-networking/netns/files/0001-Allow-selection-of-go-compiler.patch b/import-layers/meta-virtualization/recipes-networking/netns/files/0001-Allow-selection-of-go-compiler.patch
deleted file mode 100644
index 84fb9a4..0000000
--- a/import-layers/meta-virtualization/recipes-networking/netns/files/0001-Allow-selection-of-go-compiler.patch
+++ /dev/null
@@ -1,107 +0,0 @@
-From 6576f228339b7931e05a8e861f085f483817806b Mon Sep 17 00:00:00 2001
-From: Paul Barker <pbarker@toganlabs.com>
-Date: Tue, 8 May 2018 11:01:14 +0000
-Subject: [PATCH] Allow selection of go compiler
-
-By running `make GO=/path/to/go` we can now select the appropriate go compiler
-to use. This also makes it possible to cross compile netns more easily.
-
-Signed-off-by: Paul Barker <pbarker@toganlabs.com>
-Upstream-status: Pending
----
- Makefile | 25 ++++++++++++++-----------
- 1 file changed, 14 insertions(+), 11 deletions(-)
-
-diff --git a/Makefile b/Makefile
-index 3a22f3e..476cb9b 100644
---- a/src/import/Makefile
-+++ b/src/import/Makefile
-@@ -23,6 +23,9 @@ CTIMEVAR=-X $(PKG)/version.GITCOMMIT=$(GITCOMMIT) -X $(PKG)/version.VERSION=$(VE
- GO_LDFLAGS=-ldflags "-w $(CTIMEVAR)"
- GO_LDFLAGS_STATIC=-ldflags "-w $(CTIMEVAR) -extldflags -static"
- 
-+# Set our default go compiler
-+GO := go
-+
- # List the GOOS and GOARCH to build
- GOOSARCHES = linux/arm linux/arm64 linux/amd64 linux/386
- 
-@@ -33,12 +36,12 @@ build: $(NAME) ## Builds a dynamic executable or package
- 
- $(NAME): *.go VERSION.txt
- 	@echo "+ $@"
--	go build -tags "$(BUILDTAGS)" ${GO_LDFLAGS} -o $(NAME) .
-+	$(GO) build -tags "$(BUILDTAGS)" ${GO_LDFLAGS} -o $(NAME) .
- 
- .PHONY: static
- static: ## Builds a static executable
- 	@echo "+ $@"
--	CGO_ENABLED=0 go build \
-+	CGO_ENABLED=0 $(GO) build \
- 				-tags "$(BUILDTAGS) static_build" \
- 				${GO_LDFLAGS_STATIC} -o $(NAME) .
- 
-@@ -55,23 +58,23 @@ lint: ## Verifies `golint` passes
- .PHONY: test
- test: ## Runs the go tests
- 	@echo "+ $@"
--	@go test -v -tags "$(BUILDTAGS) cgo" $(shell go list ./... | grep -v vendor)
-+	@$(GO) test -v -tags "$(BUILDTAGS) cgo" $(shell $(GO) list ./... | grep -v vendor)
- 
- .PHONY: vet
- vet: ## Verifies `go vet` passes
- 	@echo "+ $@"
--	@go vet $(shell go list ./... | grep -v vendor) | grep -v '.pb.go:' | tee /dev/stderr
-+	@$(GO) vet $(shell $(GO) list ./... | grep -v vendor) | grep -v '.pb.go:' | tee /dev/stderr
- 
- .PHONY: staticcheck
- staticcheck: ## Verifies `staticcheck` passes
- 	@echo "+ $@"
--	@staticcheck $(shell go list ./... | grep -v vendor) | grep -v '.pb.go:' | tee /dev/stderr
-+	@staticcheck $(shell $(GO) list ./... | grep -v vendor) | grep -v '.pb.go:' | tee /dev/stderr
- 
- .PHONY: cover
- cover: ## Runs go test with coverage
- 	@echo "" > coverage.txt
--	@for d in $(shell go list ./... | grep -v vendor); do \
--		go test -race -coverprofile=profile.out -covermode=atomic "$$d"; \
-+	@for d in $(shell $(GO) list ./... | grep -v vendor); do \
-+		$(GO) test -race -coverprofile=profile.out -covermode=atomic "$$d"; \
- 		if [ -f profile.out ]; then \
- 			cat profile.out >> coverage.txt; \
- 			rm profile.out; \
-@@ -81,11 +84,11 @@ cover: ## Runs go test with coverage
- .PHONY: install
- install: ## Installs the executable or package
- 	@echo "+ $@"
--	go install -a -tags "$(BUILDTAGS)" ${GO_LDFLAGS} .
-+	$(GO) install -a -tags "$(BUILDTAGS)" ${GO_LDFLAGS} .
- 
- define buildpretty
- mkdir -p $(BUILDDIR)/$(1)/$(2);
--GOOS=$(1) GOARCH=$(2) CGO_ENABLED=0 go build \
-+GOOS=$(1) GOARCH=$(2) CGO_ENABLED=0 $(GO) build \
- 	 -o $(BUILDDIR)/$(1)/$(2)/$(NAME) \
- 	 -a -tags "$(BUILDTAGS) static_build netgo" \
- 	 -installsuffix netgo ${GO_LDFLAGS_STATIC} .;
-@@ -99,7 +102,7 @@ cross: *.go VERSION.txt ## Builds the cross-compiled binaries, creating a clean
- 	$(foreach GOOSARCH,$(GOOSARCHES), $(call buildpretty,$(subst /,,$(dir $(GOOSARCH))),$(notdir $(GOOSARCH))))
- 
- define buildrelease
--GOOS=$(1) GOARCH=$(2) CGO_ENABLED=0 go build \
-+GOOS=$(1) GOARCH=$(2) CGO_ENABLED=0 $(GO) build \
- 	 -o $(BUILDDIR)/$(NAME)-$(1)-$(2) \
- 	 -a -tags "$(BUILDTAGS) static_build netgo" \
- 	 -installsuffix netgo ${GO_LDFLAGS_STATIC} .;
-@@ -115,7 +118,7 @@ release: *.go VERSION.txt ## Builds the cross-compiled binaries, naming them in
- .PHONY: bump-version
- BUMP := patch
- bump-version: ## Bump the version in the version file. Set BUMP to [ patch | major | minor ]
--	@go get -u github.com/jessfraz/junk/sembump # update sembump tool
-+	@$(GO) get -u github.com/jessfraz/junk/sembump # update sembump tool
- 	$(eval NEW_VERSION = $(shell sembump --kind $(BUMP) $(VERSION)))
- 	@echo "Bumping VERSION.txt from $(VERSION) to $(NEW_VERSION)"
- 	echo $(NEW_VERSION) > VERSION.txt
--- 
-2.7.4
-
diff --git a/import-layers/meta-virtualization/recipes-networking/netns/files/0001-Use-correct-go-cross-compiler.patch b/import-layers/meta-virtualization/recipes-networking/netns/files/0001-Use-correct-go-cross-compiler.patch
deleted file mode 100644
index ed66e11..0000000
--- a/import-layers/meta-virtualization/recipes-networking/netns/files/0001-Use-correct-go-cross-compiler.patch
+++ /dev/null
@@ -1,77 +0,0 @@
-From d5c319bb61155d94bef2571a095d82983d786b94 Mon Sep 17 00:00:00 2001
-From: Paul Barker <pbarker@toganlabs.com>
-Date: Fri, 13 Oct 2017 17:58:11 +0000
-Subject: [PATCH] Use correct go cross-compiler
-
-Signed-off-by: Paul Barker <pbarker@toganlabs.com>
-Upstream-status: Pending
----
- Makefile | 16 ++++++++--------
- 1 file changed, 8 insertions(+), 8 deletions(-)
-
-diff --git a/Makefile b/Makefile
-index cb9a46d..633f884 100644
---- a/src/import/Makefile
-+++ b/src/import/Makefile
-@@ -33,12 +33,12 @@ build: $(NAME) ## Builds a dynamic executable or package
- 
- $(NAME): *.go VERSION
- 	@echo "+ $@"
--	go build -tags "$(BUILDTAGS)" ${GO_LDFLAGS} -o $(NAME) .
-+	$(GO) build -tags "$(BUILDTAGS)" ${GO_LDFLAGS} -o $(NAME) .
- 
- .PHONY: static
- static: ## Builds a static executable
- 	@echo "+ $@"
--	CGO_ENABLED=0 go build \
-+	CGO_ENABLED=0 $(GO) build \
- 				-tags "$(BUILDTAGS) static_build" \
- 				${GO_LDFLAGS_STATIC} -o $(NAME) .
- 
-@@ -55,21 +55,21 @@ lint: ## Verifies `golint` passes
- .PHONY: test
- test: ## Runs the go tests
- 	@echo "+ $@"
--	@go test -v -tags "$(BUILDTAGS) cgo" $(shell go list ./... | grep -v vendor)
-+	@$(GO) test -v -tags "$(BUILDTAGS) cgo" $(shell $(GO) list ./... | grep -v vendor)
- 
- .PHONY: vet
- vet: ## Verifies `go vet` passes
- 	@echo "+ $@"
--	@go vet $(shell go list ./... | grep -v vendor) | grep -v '.pb.go:' | tee /dev/stderr
-+	@$(GO) vet $(shell $(GO) list ./... | grep -v vendor) | grep -v '.pb.go:' | tee /dev/stderr
- 
- .PHONY: install
- install: ## Installs the executable or package
- 	@echo "+ $@"
--	@go install .
-+	@$(GO) install .
- 
- define buildpretty
- mkdir -p $(BUILDDIR)/$(1)/$(2);
--GOOS=$(1) GOARCH=$(2) CGO_ENABLED=0 go build \
-+GOOS=$(1) GOARCH=$(2) CGO_ENABLED=0 $(GO) build \
- 	 -o $(BUILDDIR)/$(1)/$(2)/$(NAME) \
- 	 -a -tags "$(BUILDTAGS) static_build netgo" \
- 	 -installsuffix netgo ${GO_LDFLAGS_STATIC} .;
-@@ -83,7 +83,7 @@ cross: *.go VERSION ## Builds the cross-compiled binaries, creating a clean dire
- 	$(foreach GOOSARCH,$(GOOSARCHES), $(call buildpretty,$(subst /,,$(dir $(GOOSARCH))),$(notdir $(GOOSARCH))))
- 
- define buildrelease
--GOOS=$(1) GOARCH=$(2) CGO_ENABLED=0 go build \
-+GOOS=$(1) GOARCH=$(2) CGO_ENABLED=0 $(GO) build \
- 	 -o $(BUILDDIR)/$(NAME)-$(1)-$(2) \
- 	 -a -tags "$(BUILDTAGS) static_build netgo" \
- 	 -installsuffix netgo ${GO_LDFLAGS_STATIC} .;
-@@ -99,7 +99,7 @@ release: *.go VERSION ## Builds the cross-compiled binaries, naming them in such
- .PHONY: bump-version
- BUMP := patch
- bump-version: ## Bump the version in the version file. Set KIND to [ patch | major | minor ]
--	@go get -u github.com/jessfraz/junk/sembump # update sembump tool
-+	@$(GO) get -u github.com/jessfraz/junk/sembump # update sembump tool
- 	$(eval NEW_VERSION = $(shell sembump --kind $(BUMP) $(VERSION)))
- 	@echo "Bumping VERSION from $(VERSION) to $(NEW_VERSION)"
- 	echo $(NEW_VERSION) > VERSION
--- 
-2.7.4
-
diff --git a/import-layers/meta-virtualization/recipes-networking/netns/netns_git.bb b/import-layers/meta-virtualization/recipes-networking/netns/netns_git.bb
deleted file mode 100644
index 82a961b..0000000
--- a/import-layers/meta-virtualization/recipes-networking/netns/netns_git.bb
+++ /dev/null
@@ -1,49 +0,0 @@
-HOMEPAGE = "https://github.com/jfrazelle/netns"
-SUMMARY = "Runc hook for setting up default bridge networking."
-LICENSE = "MIT"
-LIC_FILES_CHKSUM = "file://src/import/LICENSE;md5=48ef0979a2bcc3fae14ff30b8a7f5dbf"
-
-SRC_URI = "git://github.com/genuinetools/netns;branch=master \
-           file://0001-Allow-selection-of-go-compiler.patch \
-          "
-SRCREV = "0da6ab0997707024debe68c91e940c9168041bf8"
-PV = "0.4.0"
-GO_IMPORT = "import"
-
-S = "${WORKDIR}/git"
-
-inherit goarch
-inherit go
-
-do_compile() {
-	export GOARCH="${TARGET_GOARCH}"
-	export GOROOT="${STAGING_LIBDIR_NATIVE}/${TARGET_SYS}/go"
-	# Setup vendor directory so that it can be used in GOPATH.
-	#
-	# Go looks in a src directory under any directory in GOPATH but netns
-	# uses 'vendor' instead of 'vendor/src'. We can fix this with a symlink.
-	#
-	# We also need to link in the ipallocator and version directories as
-	# they are not under the src directory.
-	ln -sfn . "${S}/src/import/vendor/src"
-	mkdir -p "${S}/src/import/vendor/src/github.com/genuinetools/netns"
-	ln -sfn "${S}/src/import/ipallocator" "${S}/src/import/vendor/src/github.com/genuinetools/netns/ipallocator"
-	ln -sfn "${S}/src/import/version" "${S}/src/import/vendor/src/github.com/genuinetools/netns/version"
-	export GOPATH="${S}/src/import/vendor"
-
-	# Pass the needed cflags/ldflags so that cgo
-	# can find the needed headers files and libraries
-	export CGO_ENABLED="1"
-	export CFLAGS=""
-	export LDFLAGS=""
-	export CGO_CFLAGS="${BUILDSDK_CFLAGS} --sysroot=${STAGING_DIR_TARGET}"
-	export CGO_LDFLAGS="${BUILDSDK_LDFLAGS} --sysroot=${STAGING_DIR_TARGET}"
-
-	cd ${S}/src/import
-	oe_runmake static
-}
-
-do_install() {
-	install -d ${D}/${sbindir}
-	install ${S}/src/import/netns ${D}/${sbindir}/netns
-}
diff --git a/import-layers/meta-virtualization/recipes-networking/openvswitch/files/openvswitch-add-ptest.patch b/import-layers/meta-virtualization/recipes-networking/openvswitch/files/openvswitch-add-ptest.patch
deleted file mode 100644
index cb708de..0000000
--- a/import-layers/meta-virtualization/recipes-networking/openvswitch/files/openvswitch-add-ptest.patch
+++ /dev/null
@@ -1,68 +0,0 @@
-Add test-install rule to support ptest execution
-
-Signed-off-by: Radu Patriu <radu.patriu@enea.com>
-
-Index: openvswitch-2.1.2/Makefile.am
-===================================================================
---- openvswitch-2.1.2.orig/Makefile.am
-+++ openvswitch-2.1.2/Makefile.am
-@@ -300,3 +300,5 @@
- include python/compat/automake.mk
- include tutorial/automake.mk
- include vtep/automake.mk
-+include test.mk
-+
-Index: openvswitch-2.1.2/test.mk
-===================================================================
---- /dev/null
-+++ openvswitch-2.1.2/test.mk
-@@ -0,0 +1,49 @@
-+TEST_DEST ?= ${prefix}/lib/openvswitch
-+TEST_ROOT ?= ${prefix}/lib/openvswitch
-+TEST_DEPEND =
-+
-+if HAVE_OPENSSL
-+TEST_DEPEND += $(TESTPKI_FILES)
-+endif
-+
-+test-install: $(TEST_DEPEND)
-+	@list='$(noinst_PROGRAMS) $(EXTRA_DIST) $(dist_check_SCRIPTS) $(TEST_DEPEND) tests/atlocal tests/atconfig' ;\
-+	install -d $(TEST_DEST)/tests ;\
-+	install -d $(TEST_DEST)/python ;\
-+	install -d $(TEST_DEST)/python/ovs ;\
-+	install -d $(TEST_DEST)/python/ovs/db ;\
-+	install -d $(TEST_DEST)/python/ovs/unixctl ;\
-+	install -d $(TEST_DEST)/vswitchd ;\
-+	install vswitchd/vswitch.ovsschema $(TEST_DEST)/vswitchd ;\
-+	install -d $(TEST_DEST)/debian ;\
-+	install debian/ovs-monitor-ipsec $(TEST_DEST)/debian ;\
-+	install -d $(TEST_DEST)/build-aux ;\
-+	install build-aux/check-structs $(TEST_DEST)/build-aux ;\
-+	install -d $(TEST_DEST)/xenserver ;\
-+	install xenserver/usr_share_openvswitch_scripts_ovs-xapi-sync $(TEST_DEST)/xenserver ;\
-+	install xenserver/opt_xensource_libexec_interface-reconfigure $(TEST_DEST)/xenserver ;\
-+	install xenserver/opt_xensource_libexec_InterfaceReconfigure.py $(TEST_DEST)/xenserver ;\
-+	install xenserver/opt_xensource_libexec_InterfaceReconfigureBridge.py $(TEST_DEST)/xenserver ;\
-+	install xenserver/opt_xensource_libexec_InterfaceReconfigureVswitch.py $(TEST_DEST)/xenserver ;\
-+	install -d $(TEST_DEST)/vtep ;\
-+	install vtep/vtep.ovsschema $(TEST_DEST)/vtep ;\
-+	for p in $$list ; do \
-+	  echo $$p ;\
-+	  p=$${p#./} ;\
-+	  pre=$${p#tests\/} ;\
-+	  if test $$pre != $$p ; then \
-+	    echo installing $$p to $(TEST_DEST)/tests/$$pre ;\
-+	    install $$p $(TEST_DEST)/tests/$$pre ;\
-+	    continue ;\
-+	  fi ;\
-+	  pre=$${p#python\/ovs\/} ;\
-+	  if test $$pre != $$p ; then \
-+	    echo installing $$p to $(TEST_DEST)/python/ovs/$$pre ;\
-+	    install $$p $(TEST_DEST)/python/ovs/$$pre ;\
-+	    continue ;\
-+	  fi; \
-+	done ;\
-+	sed -i 's|abs_builddir=.*|abs_builddir='"'"'$(TEST_ROOT)/tests'"'"'|g' $(TEST_DEST)/tests/atconfig
-+	sed -i 's|abs_srcdir=.*|abs_srcdir='"'"'$(TEST_ROOT)/tests'"'"'|g' $(TEST_DEST)/tests/atconfig
-+	sed -i 's|abs_top_srcdir=.*|abs_top_srcdir='"'"'$(TEST_ROOT)'"'"'|g' $(TEST_DEST)/tests/atconfig
-+	sed -i 's|abs_top_builddir=.*|abs_top_builddir='"'"'$(TEST_ROOT)'"'"'|g' $(TEST_DEST)/tests/atconfig
diff --git a/import-layers/meta-virtualization/recipes-networking/openvswitch/files/openvswitch-example b/import-layers/meta-virtualization/recipes-networking/openvswitch/files/openvswitch-example
deleted file mode 100644
index 6f08c3f..0000000
--- a/import-layers/meta-virtualization/recipes-networking/openvswitch/files/openvswitch-example
+++ /dev/null
@@ -1,102 +0,0 @@
-#! /bin/sh
-#
-# Copyright (C) 2011 Nicira Networks, Inc.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at:
-#
-#     http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-### BEGIN INIT INFO
-# Provides:          openvswitch-switch
-# Required-Start:    $network $named $remote_fs $syslog
-# Required-Stop:     $remote_fs
-# Default-Start:     2 3 4 5
-# Default-Stop:      0 1 6
-# Short-Description: Open vSwitch switch
-### END INIT INFO
-
-(test -x /usr/sbin/ovs-vswitchd && test -x /usr/sbin/ovsdb-server) || exit 0
-
-. /usr/share/openvswitch/scripts/ovs-lib
-test -e /etc/default/openvswitch-switch && . /etc/default/openvswitch-switch
-
-if test X"$BRCOMPAT" = Xyes && test ! -x /usr/sbin/ovs-brcompatd; then
-    BRCOMPAT=no
-    log_warning_msg "ovs-brcompatd missing, disabling bridge compatibility"
-fi
-
-ovs_ctl () {
-    set /usr/share/openvswitch/scripts/ovs-ctl "$@"
-    if test X"$BRCOMPAT" = Xyes; then
-        set "$@" --brcompat
-    fi
-    "$@"
-}
-
-load_kmod () {
-    ovs_ctl load-kmod || exit $?
-}
-
-start () {
-    if ovs_ctl load-kmod; then
-	:
-    else
-	echo "Module has probably not been built for this kernel."
-	if ! test -d /usr/share/doc/openvswitch-datapath-source; then
-	    echo "Install the openvswitch-datapath-source package, then read"
-	else
-            echo "For instructions, read"
-	fi
-	echo "/usr/share/doc/openvswitch-datapath-source/README.Debian"
-    fi
-    set ovs_ctl ${1-start} --system-id=random
-    if test X"$FORCE_COREFILES" != X; then
-	set "$@" --force-corefiles="$FORCE_COREFILES"
-    fi
-    "$@" || exit $?
-
-    ovs_ctl --protocol=gre enable-protocol
-}
-
-stop () {
-    ovs_ctl stop
-}
-
-case $1 in
-    start)
-        start
-	;;
-    stop | force-stop)
-        stop
-        ;;
-    reload | force-reload)
-        # The OVS daemons keep up-to-date.
-        ;;
-    restart)
-        stop
-        start
-        ;;
-    status)
-        ovs_ctl status
-        ;;
-    force-reload-kmod)
-        start force-reload-kmod
-        ;;
-    load-kmod)
-        load_kmod
-        ;;
-    *)
-        echo "Usage: $0 {start|stop|restart|force-reload|status|force-stop|force-reload-kmod|load-kmod}" >&2
-        exit 1
-        ;;
-esac
-
-exit 0
diff --git a/import-layers/meta-virtualization/recipes-networking/openvswitch/files/openvswitch-switch b/import-layers/meta-virtualization/recipes-networking/openvswitch/files/openvswitch-switch
deleted file mode 100644
index 6f08c3f..0000000
--- a/import-layers/meta-virtualization/recipes-networking/openvswitch/files/openvswitch-switch
+++ /dev/null
@@ -1,102 +0,0 @@
-#! /bin/sh
-#
-# Copyright (C) 2011 Nicira Networks, Inc.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at:
-#
-#     http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-### BEGIN INIT INFO
-# Provides:          openvswitch-switch
-# Required-Start:    $network $named $remote_fs $syslog
-# Required-Stop:     $remote_fs
-# Default-Start:     2 3 4 5
-# Default-Stop:      0 1 6
-# Short-Description: Open vSwitch switch
-### END INIT INFO
-
-(test -x /usr/sbin/ovs-vswitchd && test -x /usr/sbin/ovsdb-server) || exit 0
-
-. /usr/share/openvswitch/scripts/ovs-lib
-test -e /etc/default/openvswitch-switch && . /etc/default/openvswitch-switch
-
-if test X"$BRCOMPAT" = Xyes && test ! -x /usr/sbin/ovs-brcompatd; then
-    BRCOMPAT=no
-    log_warning_msg "ovs-brcompatd missing, disabling bridge compatibility"
-fi
-
-ovs_ctl () {
-    set /usr/share/openvswitch/scripts/ovs-ctl "$@"
-    if test X"$BRCOMPAT" = Xyes; then
-        set "$@" --brcompat
-    fi
-    "$@"
-}
-
-load_kmod () {
-    ovs_ctl load-kmod || exit $?
-}
-
-start () {
-    if ovs_ctl load-kmod; then
-	:
-    else
-	echo "Module has probably not been built for this kernel."
-	if ! test -d /usr/share/doc/openvswitch-datapath-source; then
-	    echo "Install the openvswitch-datapath-source package, then read"
-	else
-            echo "For instructions, read"
-	fi
-	echo "/usr/share/doc/openvswitch-datapath-source/README.Debian"
-    fi
-    set ovs_ctl ${1-start} --system-id=random
-    if test X"$FORCE_COREFILES" != X; then
-	set "$@" --force-corefiles="$FORCE_COREFILES"
-    fi
-    "$@" || exit $?
-
-    ovs_ctl --protocol=gre enable-protocol
-}
-
-stop () {
-    ovs_ctl stop
-}
-
-case $1 in
-    start)
-        start
-	;;
-    stop | force-stop)
-        stop
-        ;;
-    reload | force-reload)
-        # The OVS daemons keep up-to-date.
-        ;;
-    restart)
-        stop
-        start
-        ;;
-    status)
-        ovs_ctl status
-        ;;
-    force-reload-kmod)
-        start force-reload-kmod
-        ;;
-    load-kmod)
-        load_kmod
-        ;;
-    *)
-        echo "Usage: $0 {start|stop|restart|force-reload|status|force-stop|force-reload-kmod|load-kmod}" >&2
-        exit 1
-        ;;
-esac
-
-exit 0
diff --git a/import-layers/meta-virtualization/recipes-networking/openvswitch/files/openvswitch-switch-setup b/import-layers/meta-virtualization/recipes-networking/openvswitch/files/openvswitch-switch-setup
deleted file mode 100644
index 73387fb..0000000
--- a/import-layers/meta-virtualization/recipes-networking/openvswitch/files/openvswitch-switch-setup
+++ /dev/null
@@ -1,8 +0,0 @@
-# This is a POSIX shell fragment                -*- sh -*-
-
-# FORCE_COREFILES: If 'yes' then core files will be enabled.
-# FORCE_COREFILES=yes
-
-# BRCOMPAT: If 'yes' and the openvswitch-brcompat package is installed, then
-# Linux bridge compatibility will be enabled.
-# BRCOMPAT=yes
diff --git a/import-layers/meta-virtualization/recipes-networking/openvswitch/files/openvswitch-testcontroller b/import-layers/meta-virtualization/recipes-networking/openvswitch/files/openvswitch-testcontroller
deleted file mode 100755
index aad5ad6..0000000
--- a/import-layers/meta-virtualization/recipes-networking/openvswitch/files/openvswitch-testcontroller
+++ /dev/null
@@ -1,274 +0,0 @@
-#!/bin/sh
-#
-# Copyright (c) 2011 Nicira Networks Inc.
-# Copyright (c) 2007, 2009 Javier Fernandez-Sanguino <jfs@debian.org>
-#
-# This is free software; you may 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 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 with
-# the Debian operating system, in /usr/share/common-licenses/GPL;  if
-# not, write to the Free Software Foundation, Inc., 59 Temple Place,
-# Suite 330, Boston, MA 02111-1307 USA
-#
-### BEGIN INIT INFO
-# Provides:          openvswitch-testcontroller
-# Required-Start:    $network $local_fs $remote_fs
-# Required-Stop:     $remote_fs
-# Should-Start:      $named
-# Should-Stop:       
-# Default-Start:     2 3 4 5
-# Default-Stop:      0 1 6
-# Short-Description: Open vSwitch controller
-### END INIT INFO
-
-PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
-
-DAEMON=/usr/bin/ovs-testcontroller # Introduce the server's location here
-NAME=ovs-testcontroller         # Introduce the short server's name here
-DESC=ovs-testcontroller         # Introduce a short description here
-LOGDIR=/var/log/openvswitch # Log directory to use
-
-PIDFILE=/var/run/openvswitch/$NAME.pid 
-
-test -x $DAEMON || exit 0
-
-. /lib/lsb/init-functions
-
-# Default options, these can be overriden by the information
-# at /etc/default/openvswitch-testcontroller
-DAEMON_OPTS=""          # Additional options given to the server 
-
-DODTIME=10              # Time to wait for the server to die, in seconds
-                        # If this value is set too low you might not
-                        # let some servers to die gracefully and
-                        # 'restart' will not work
-                        
-LOGFILE=$LOGDIR/$NAME.log  # Server logfile
-#DAEMONUSER=            # User to run the daemons as. If this value
-                        # is set start-stop-daemon will chuid the server
-
-# Include defaults if available
-default=/etc/default/openvswitch-testcontroller
-if [ -f $default ] ; then
-    . $default
-fi
-
-# Check that the user exists (if we set a user)
-# Does the user exist?
-if [ -n "$DAEMONUSER" ] ; then
-    if getent passwd | grep -q "^$DAEMONUSER:"; then
-        # Obtain the uid and gid
-        DAEMONUID=`getent passwd |grep "^$DAEMONUSER:" | awk -F : '{print $3}'`
-        DAEMONGID=`getent passwd |grep "^$DAEMONUSER:" | awk -F : '{print $4}'`
-    else
-        log_failure_msg "The user $DAEMONUSER, required to run $NAME does not exist."
-        exit 1
-    fi
-fi
-
-
-set -e
-
-running_pid() {
-# Check if a given process pid's cmdline matches a given name
-    pid=$1
-    name=$2
-    [ -z "$pid" ] && return 1 
-    [ ! -d /proc/$pid ] &&  return 1
-    cmd=`cat /proc/$pid/cmdline | tr "\000" "\n"|head -n 1 |cut -d : -f 1`
-    # Is this the expected server
-    [ "$cmd" != "$name" ] &&  return 1
-    return 0
-}
-
-running() {
-# Check if the process is running looking at /proc
-# (works for all users)
-
-    # No pidfile, probably no daemon present
-    [ ! -f "$PIDFILE" ] && return 1
-    pid=`cat $PIDFILE`
-    running_pid $pid $DAEMON || return 1
-    return 0
-}
-
-start_server() {
-    if [ -z "$LISTEN" ]; then
-        echo "$default: No connection methods configured, controller disabled" >&2
-        exit 0
-    fi
-
-    if [ ! -d /var/run/openvswitch ]; then
-        install -d -m 755 -o root -g root /var/run/openvswitch
-    fi
-
-    SSL_OPTS=
-    case $LISTEN in
-        *ssl*)
-            : ${PRIVKEY:=/etc/openvswitch-testcontroller/privkey.pem}
-            : ${CERT:=/etc/openvswitch-testcontroller/cert.pem}
-            : ${CACERT:=/etc/openvswitch-testcontroller/cacert.pem}
-            if test ! -e "$PRIVKEY" || test ! -e "$CERT" ||
-                test ! -e "$CACERT"; then
-                if test ! -e "$PRIVKEY"; then
-                    echo "$PRIVKEY: private key missing" >&2
-                fi
-                if test ! -e "$CERT"; then
-                    echo "$CERT: certificate for private key missing" >&2
-                fi
-                if test ! -e "$CACERT"; then
-                    echo "$CACERT: CA certificate missing" >&2
-                fi
-                exit 1
-            fi
-            SSL_OPTS="--private-key=$PRIVKEY --certificate=$CERT --ca-cert=$CACERT"
-            ;;
-    esac
-
-# Start the process using the wrapper
-        if [ -z "$DAEMONUSER" ] ; then
-            start-stop-daemon --start --pidfile $PIDFILE \
-                        --exec $DAEMON -- --detach --pidfile=$PIDFILE \
-                        $LISTEN $DAEMON_OPTS $SSL_OPTS
-            errcode=$?
-        else
-# if we are using a daemonuser then change the user id
-            start-stop-daemon --start --quiet --pidfile $PIDFILE \
-                        --chuid $DAEMONUSER --exec $DAEMON -- \
-                        --detach --pidfile=$PIDFILE $LISTEN $DAEMON_OPTS \
-                        $SSL_OPTS
-            errcode=$?
-        fi
-        return $errcode
-}
-
-stop_server() {
-# Stop the process using the wrapper
-        if [ -z "$DAEMONUSER" ] ; then
-            start-stop-daemon --stop --quiet --pidfile $PIDFILE \
-                        --exec $DAEMON
-            errcode=$?
-        else
-# if we are using a daemonuser then look for process that match
-            start-stop-daemon --stop --quiet --pidfile $PIDFILE \
-                        --user $DAEMONUSER --exec $DAEMON
-            errcode=$?
-        fi
-
-        return $errcode
-}
-
-reload_server() {
-    [ ! -f "$PIDFILE" ] && return 1
-    pid=`cat $PIDFILE` # This is the daemon's pid
-    # Send a SIGHUP
-    kill -1 $pid
-    return $?
-}
-
-force_stop() {
-# Force the process to die killing it manually
-    [ ! -e "$PIDFILE" ] && return
-    if running ; then
-        kill -15 $pid
-        # Is it really dead?
-        sleep "$DODTIME"
-        if running ; then
-            kill -9 $pid
-            sleep "$DODTIME"
-            if running ; then
-                echo "Cannot kill $NAME (pid=$pid)!"
-                exit 1
-            fi
-        fi
-    fi
-    rm -f $PIDFILE
-}
-
-
-case "$1" in
-  start)
-        log_begin_msg "Starting $DESC " "$NAME"
-        # Check if it's running first
-        if running ;  then
-            log_warning_msg "apparently already running"
-            log_end_msg 0
-            exit 0
-        fi
-        if start_server && running ;  then
-            # It's ok, the server started and is running
-            log_end_msg 0
-        else
-            # Either we could not start it or it is not running
-            # after we did
-            # NOTE: Some servers might die some time after they start,
-            # this code does not try to detect this and might give
-            # a false positive (use 'status' for that)
-            log_end_msg 1
-        fi
-        ;;
-  stop)
-        log_begin_msg "Stopping $DESC" "$NAME"
-        if running ; then
-            # Only stop the server if we see it running
-            stop_server
-            log_end_msg $?
-        else
-            # If it's not running don't do anything
-            log_warning_msg "apparently not running"
-            log_end_msg 0
-            exit 0
-        fi
-        ;;
-  force-stop)
-        # First try to stop gracefully the program
-        $0 stop
-        if running; then
-            # If it's still running try to kill it more forcefully
-            log_begin_msg "Stopping (force) $DESC" "$NAME"
-            force_stop
-            log_end_msg $?
-        fi
-        ;;
-  restart|force-reload)
-        log_begin_msg "Restarting $DESC" "$NAME"
-        stop_server
-        # Wait some sensible amount, some server need this
-        [ -n "$DODTIME" ] && sleep $DODTIME
-        start_server
-        running
-        log_end_msg $?
-        ;;
-  status)
-
-        log_begin_msg "Checking status of $DESC" "$NAME"
-        if running ;  then
-            log_begin_msg "running"
-            log_end_msg 0
-        else
-            log_warning_msg "apparently not running"
-            log_end_msg 1
-            exit 1
-        fi
-        ;;
-  # Use this if the daemon cannot reload
-  reload)
-        log_warning_msg "Reloading $NAME daemon: not implemented, as the daemon"
-        log_warning_msg "cannot re-read the config file (use restart)."
-        ;;
-  *)
-        N=/etc/init.d/openvswitch-testcontroller
-        echo "Usage: $N {start|stop|force-stop|restart|force-reload|status}" >&2
-        exit 1
-        ;;
-esac
-
-exit 0
diff --git a/import-layers/meta-virtualization/recipes-networking/openvswitch/files/openvswitch-testcontroller-setup b/import-layers/meta-virtualization/recipes-networking/openvswitch/files/openvswitch-testcontroller-setup
deleted file mode 100644
index b431ece..0000000
--- a/import-layers/meta-virtualization/recipes-networking/openvswitch/files/openvswitch-testcontroller-setup
+++ /dev/null
@@ -1,29 +0,0 @@
-# This is a POSIX shell fragment                -*- sh -*-
-
-# LISTEN: What OpenFlow connection methods should the controller listen on?
-#
-# This is a space-delimited list of connection methods:
-#
-# * "pssl:[PORT]": Listen for SSL connections on the specified PORT
-#   (default: 6633).  The private key, certificate, and CA certificate
-#   must be specified below.
-#
-# * "pctp:[PORT]": Listen for TCP connections on the specified PORT
-#   (default: 6633).  Not recommended for security reasons.
-#
-LISTEN="pssl:"
-
-# PRIVKEY: Name of file containing controller's private key.
-# Required if SSL enabled.
-PRIVKEY=/etc/openvswitch-testcontroller/privkey.pem
-
-# CERT: Name of file containing certificate for private key.
-# Required if SSL enabled.
-CERT=/etc/openvswitch-testcontroller/cert.pem
-
-# CACERT: Name of file containing switch CA certificate.
-# Required if SSL enabled.
-CACERT=/etc/openvswitch-testcontroller/cacert.pem
-
-# Additional options to pass to controller, e.g. "--hub"
-DAEMON_OPTS=""
diff --git a/import-layers/meta-virtualization/recipes-networking/openvswitch/files/python-make-remaining-scripts-use-usr-bin-env.patch b/import-layers/meta-virtualization/recipes-networking/openvswitch/files/python-make-remaining-scripts-use-usr-bin-env.patch
deleted file mode 100644
index deff10b..0000000
--- a/import-layers/meta-virtualization/recipes-networking/openvswitch/files/python-make-remaining-scripts-use-usr-bin-env.patch
+++ /dev/null
@@ -1,150 +0,0 @@
-From f21a0490555d5fe8f5a9ce982defa666a64151c0 Mon Sep 17 00:00:00 2001
-From: Mark Asselstine <mark.asselstine@windriver.com>
-Date: Fri, 13 Jan 2017 16:12:55 -0500
-Subject: [PATCH] python: make remaining scripts use /usr/bin/env
-
-Unfortunately there is no concept of a host python vs. target python
-to facilitate cross compilation. There is only one PYTHON variable and
-this is used during building and in the header of python scripts after
-installation. The best approach for cross compilation is to thus to
-ensure python is in the path and avoid passing a path as part of
-PYTHON. To make this function smoothly all installed scripts should
-make use of /usr/bin/env to increase the chances of finding python.
-
-Signed-off-by: Mark Asselstine <mark.asselstine@windriver.com>
-
----
- build-aux/check-structs                  | 2 +-
- build-aux/extract-ofp-actions            | 2 +-
- build-aux/extract-ofp-errors             | 2 +-
- build-aux/extract-ofp-fields             | 2 +-
- build-aux/extract-ofp-msgs               | 2 +-
- build-aux/xml2nroff                      | 2 +-
- ovn/utilities/ovn-docker-overlay-driver  | 2 +-
- ovn/utilities/ovn-docker-underlay-driver | 2 +-
- ovsdb/ovsdb-doc                          | 2 +-
- ovsdb/ovsdb-dot.in                       | 2 +-
- ovsdb/ovsdb-idlc.in                      | 2 +-
- utilities/bugtool/ovs-bugtool.in         | 2 +-
- 12 files changed, 12 insertions(+), 12 deletions(-)
-
-diff --git a/build-aux/check-structs b/build-aux/check-structs
-index f79f235..5129b72 100755
---- a/build-aux/check-structs
-+++ b/build-aux/check-structs
-@@ -1,4 +1,4 @@
--#! /usr/bin/python
-+#! /usr/bin/env python3
- 
- import os.path
- import sys
-diff --git a/build-aux/extract-ofp-actions b/build-aux/extract-ofp-actions
-index 0062ab8..ee8c4ff 100755
---- a/build-aux/extract-ofp-actions
-+++ b/build-aux/extract-ofp-actions
-@@ -1,4 +1,4 @@
--#! /usr/bin/python
-+#! /usr/bin/env python3
- 
- import sys
- import os.path
-diff --git a/build-aux/extract-ofp-errors b/build-aux/extract-ofp-errors
-index 2312b76..e36444e 100755
---- a/build-aux/extract-ofp-errors
-+++ b/build-aux/extract-ofp-errors
-@@ -1,4 +1,4 @@
--#! /usr/bin/python
-+#! /usr/bin/env python3
- 
- import sys
- import os.path
-diff --git a/build-aux/extract-ofp-fields b/build-aux/extract-ofp-fields
-index 498b887..c248e76 100755
---- a/build-aux/extract-ofp-fields
-+++ b/build-aux/extract-ofp-fields
-@@ -1,4 +1,4 @@
--#! /usr/bin/python
-+#! /usr/bin/env python3
- 
- import getopt
- import sys
-diff --git a/build-aux/extract-ofp-msgs b/build-aux/extract-ofp-msgs
-index 1813638..c2a91f9 100755
---- a/build-aux/extract-ofp-msgs
-+++ b/build-aux/extract-ofp-msgs
-@@ -1,4 +1,4 @@
--#! /usr/bin/python
-+#! /usr/bin/env python3
- 
- import sys
- import os.path
-diff --git a/build-aux/xml2nroff b/build-aux/xml2nroff
-index bd4e879..db45c56 100755
---- a/build-aux/xml2nroff
-+++ b/build-aux/xml2nroff
-@@ -1,4 +1,4 @@
--#! /usr/bin/python
-+#! /usr/bin/env python3
- 
- # Copyright (c) 2010, 2011, 2012, 2013, 2014, 2015, 2016 Nicira, Inc.
- #
-diff --git a/ovn/utilities/ovn-docker-overlay-driver b/ovn/utilities/ovn-docker-overlay-driver
-index 52de3db..3b1fa45 100755
---- a/ovn/utilities/ovn-docker-overlay-driver
-+++ b/ovn/utilities/ovn-docker-overlay-driver
-@@ -1,4 +1,4 @@
--#! /usr/bin/python
-+#! /usr/bin/env python3
- # Copyright (C) 2015 Nicira, Inc.
- #
- # Licensed under the Apache License, Version 2.0 (the "License");
-diff --git a/ovn/utilities/ovn-docker-underlay-driver b/ovn/utilities/ovn-docker-underlay-driver
-index 2c9c4b6..551e7a1 100755
---- a/ovn/utilities/ovn-docker-underlay-driver
-+++ b/ovn/utilities/ovn-docker-underlay-driver
-@@ -1,4 +1,4 @@
--#! /usr/bin/python
-+#! /usr/bin/env python3
- # Copyright (C) 2015 Nicira, Inc.
- #
- # Licensed under the Apache License, Version 2.0 (the "License");
-diff --git a/ovsdb/ovsdb-doc b/ovsdb/ovsdb-doc
-index 5cf26ee..bdf2dcc 100755
---- a/ovsdb/ovsdb-doc
-+++ b/ovsdb/ovsdb-doc
-@@ -1,4 +1,4 @@
--#! /usr/bin/python
-+#! /usr/bin/env python3
- 
- # Copyright (c) 2010, 2011, 2012, 2013, 2014, 2015 Nicira, Inc.
- #
-diff --git a/ovsdb/ovsdb-dot.in b/ovsdb/ovsdb-dot.in
-index 134ce22..893c408 100755
---- a/ovsdb/ovsdb-dot.in
-+++ b/ovsdb/ovsdb-dot.in
-@@ -1,4 +1,4 @@
--#! @PYTHON@
-+#! /usr/bin/env @PYTHON@
- 
- from datetime import date
- import ovs.db.error
-diff --git a/ovsdb/ovsdb-idlc.in b/ovsdb/ovsdb-idlc.in
-index 721ab50..bfbcf23 100755
---- a/ovsdb/ovsdb-idlc.in
-+++ b/ovsdb/ovsdb-idlc.in
-@@ -1,4 +1,4 @@
--#! @PYTHON@
-+#! /usr/bin/env @PYTHON@
- 
- import getopt
- import os
-diff --git a/utilities/bugtool/ovs-bugtool.in b/utilities/bugtool/ovs-bugtool.in
-index 963c50c..c84d7c2 100755
---- a/utilities/bugtool/ovs-bugtool.in
-+++ b/utilities/bugtool/ovs-bugtool.in
-@@ -1,4 +1,4 @@
--#! @PYTHON@
-+#! /usr/bin/env @PYTHON@
- 
- # This library is free software; you can redistribute it and/or
- # modify it under the terms of version 2.1 of the GNU Lesser General Public
diff --git a/import-layers/meta-virtualization/recipes-networking/openvswitch/files/python-switch-remaining-scripts-to-use-python3.patch b/import-layers/meta-virtualization/recipes-networking/openvswitch/files/python-switch-remaining-scripts-to-use-python3.patch
deleted file mode 100644
index 6a1b832..0000000
--- a/import-layers/meta-virtualization/recipes-networking/openvswitch/files/python-switch-remaining-scripts-to-use-python3.patch
+++ /dev/null
@@ -1,111 +0,0 @@
-From 39d1af836d844c89e625cfc908545e93977af8be Mon Sep 17 00:00:00 2001
-From: Mark Asselstine <mark.asselstine@windriver.com>
-Date: Wed, 3 May 2017 10:39:12 -0400
-Subject: [PATCH] python: switch remaining scripts to use python3
-
-Work to remove the main openvswitch package's dependency on python 2.
-
-Signed-off-by: Mark Asselstine <mark.asselstine@windriver.com>
-
----
- ofproto/ipfix-gen-entities                            | 2 +-
- tests/test-l7.py                                      | 2 +-
- utilities/checkpatch.py                               | 2 +-
- utilities/ovs-dev.py                                  | 2 +-
- utilities/ovs-pipegen.py                              | 2 +-
- vtep/ovs-vtep                                         | 2 +-
- xenserver/etc_xapi.d_plugins_openvswitch-cfg-update   | 2 +-
- xenserver/opt_xensource_libexec_interface-reconfigure | 2 +-
- xenserver/usr_share_openvswitch_scripts_ovs-xapi-sync | 2 +-
- 9 files changed, 9 insertions(+), 9 deletions(-)
-
-diff --git a/ofproto/ipfix-gen-entities b/ofproto/ipfix-gen-entities
-index 0be7199..d2cce42 100755
---- a/ofproto/ipfix-gen-entities
-+++ b/ofproto/ipfix-gen-entities
-@@ -1,4 +1,4 @@
--#! /usr/bin/env python
-+#! /usr/bin/env python3
- #
- # Copyright (C) 2012 Nicira, Inc.
- #
-diff --git a/tests/test-l7.py b/tests/test-l7.py
-index d7854a1..f09defb 100755
---- a/tests/test-l7.py
-+++ b/tests/test-l7.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python3
- # Copyright (c) 2015, 2016 Nicira, Inc.
- #
- # Licensed under the Apache License, Version 2.0 (the "License");
-diff --git a/utilities/checkpatch.py b/utilities/checkpatch.py
-index 26eb5c3..2e1932b 100755
---- a/utilities/checkpatch.py
-+++ b/utilities/checkpatch.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python3
- # Copyright (c) 2016 Red Hat, Inc.
- #
- # Licensed under the Apache License, Version 2.0 (the "License");
-diff --git a/utilities/ovs-dev.py b/utilities/ovs-dev.py
-index 9ce0f04..839e13e 100755
---- a/utilities/ovs-dev.py
-+++ b/utilities/ovs-dev.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python3
- # Copyright (c) 2013, 2014, 2015, 2016 Nicira, Inc.
- #
- # Licensed under the Apache License, Version 2.0 (the "License");
-diff --git a/utilities/ovs-pipegen.py b/utilities/ovs-pipegen.py
-index 4bf240f..2a8f13e 100755
---- a/utilities/ovs-pipegen.py
-+++ b/utilities/ovs-pipegen.py
-@@ -1,4 +1,4 @@
--#! /usr/bin/env python
-+#! /usr/bin/env python3
- # Copyright (c) 2013, 2014, 2015 Nicira, Inc.
- #
- # Licensed under the Apache License, Version 2.0 (the "License");
-diff --git a/vtep/ovs-vtep b/vtep/ovs-vtep
-index fd652d4..19d63f9 100755
---- a/vtep/ovs-vtep
-+++ b/vtep/ovs-vtep
-@@ -1,4 +1,4 @@
--#! /usr/bin/env python
-+#! /usr/bin/env python3
- # Copyright (C) 2013 Nicira, Inc. All Rights Reserved.
- #
- # Licensed under the Apache License, Version 2.0 (the "License");
-diff --git a/xenserver/etc_xapi.d_plugins_openvswitch-cfg-update b/xenserver/etc_xapi.d_plugins_openvswitch-cfg-update
-index e7404e3..5edad76 100755
---- a/xenserver/etc_xapi.d_plugins_openvswitch-cfg-update
-+++ b/xenserver/etc_xapi.d_plugins_openvswitch-cfg-update
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python3
- #
- # xapi plugin script to update the cache of configuration items in the
- # ovs-vswitchd configuration that are managed in the xapi database when
-diff --git a/xenserver/opt_xensource_libexec_interface-reconfigure b/xenserver/opt_xensource_libexec_interface-reconfigure
-index ea4a742..c6745ee 100755
---- a/xenserver/opt_xensource_libexec_interface-reconfigure
-+++ b/xenserver/opt_xensource_libexec_interface-reconfigure
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python3
- #
- # Copyright (c) 2008,2009 Citrix Systems, Inc.
- #
-diff --git a/xenserver/usr_share_openvswitch_scripts_ovs-xapi-sync b/xenserver/usr_share_openvswitch_scripts_ovs-xapi-sync
-index a776c00..d5ff8af 100755
---- a/xenserver/usr_share_openvswitch_scripts_ovs-xapi-sync
-+++ b/xenserver/usr_share_openvswitch_scripts_ovs-xapi-sync
-@@ -1,4 +1,4 @@
--#! /usr/bin/env python
-+#! /usr/bin/env python3
- # Copyright (c) 2009, 2010, 2011, 2012, 2013 Nicira, Inc.
- #
- # Licensed under the Apache License, Version 2.0 (the "License");
diff --git a/import-layers/meta-virtualization/recipes-networking/openvswitch/files/run-ptest b/import-layers/meta-virtualization/recipes-networking/openvswitch/files/run-ptest
deleted file mode 100644
index dd06707..0000000
--- a/import-layers/meta-virtualization/recipes-networking/openvswitch/files/run-ptest
+++ /dev/null
@@ -1,4 +0,0 @@
-#!/bin/sh
-
-./tests/testsuite --am-fmt -C tests AUTOTEST_PATH=utilities:vswitchd:ovsdb:tests
-
diff --git a/import-layers/meta-virtualization/recipes-networking/openvswitch/openvswitch-git/0001-Python3-compatibility-Convert-print-statements.patch b/import-layers/meta-virtualization/recipes-networking/openvswitch/openvswitch-git/0001-Python3-compatibility-Convert-print-statements.patch
deleted file mode 100644
index 7bdcc00..0000000
--- a/import-layers/meta-virtualization/recipes-networking/openvswitch/openvswitch-git/0001-Python3-compatibility-Convert-print-statements.patch
+++ /dev/null
@@ -1,1262 +0,0 @@
-From 3658d861c3c83caab9040bec04b195be3f86d4ce Mon Sep 17 00:00:00 2001
-From: Jason Wessel <jason.wessel@windriver.com>
-Date: Thu, 29 Jun 2017 20:33:23 -0700
-Subject: [PATCH] Python3 compatibility: Convert print statements
-
-Commit d34a1cc02536f9a812517a71accec3fbd3c6c98b from
-https://github.com/openvswitch/ovs.git
-
-This patch fixes up all the print statements to work with python3 or
-python2.
-
-Signed-off-by: Jason Wessel <jason.wessel@windriver.com>
-Signed-off-by: Ben Pfaff <blp@ovn.org>
-
----
- build-aux/check-structs       |   4 +-
- build-aux/extract-ofp-actions |  68 +++---
- build-aux/extract-ofp-errors  |   2 +-
- build-aux/extract-ofp-fields  |   2 +-
- build-aux/extract-ofp-msgs    |   6 +-
- ovsdb/ovsdb-doc               |   6 +-
- ovsdb/ovsdb-idlc.in           | 523 +++++++++++++++++++++---------------------
- 7 files changed, 306 insertions(+), 305 deletions(-)
-
-diff --git a/build-aux/check-structs b/build-aux/check-structs
-index 5129b72..cbb19b6 100755
---- a/build-aux/check-structs
-+++ b/build-aux/check-structs
-@@ -211,7 +211,7 @@ def checkStructs():
- 
-     if '--help' in sys.argv:
-         argv0 = os.path.basename(sys.argv[0])
--        print '''\
-+        print('''\
- %(argv0)s, for checking struct and struct member alignment
- usage: %(argv0)s -Ipath HEADER [HEADER]...
- 
-@@ -226,7 +226,7 @@ assertions using OFP_ASSERT.
- 
- This program is specialized for reading Open vSwitch's OpenFlow header
- files.  It will not work on arbitrary header files without extensions.\
--''' % {"argv0": argv0}
-+''' % {"argv0": argv0})
-         sys.exit(0)
- 
-     global fileName
-diff --git a/build-aux/extract-ofp-actions b/build-aux/extract-ofp-actions
-index ee8c4ff..67e3848 100755
---- a/build-aux/extract-ofp-actions
-+++ b/build-aux/extract-ofp-actions
-@@ -67,7 +67,7 @@ def fatal(msg):
- 
- def usage():
-     argv0 = os.path.basename(sys.argv[0])
--    print ('''\
-+    print('''\
- %(argv0)s, for extracting OpenFlow action data
- usage: %(argv0)s OFP_ACTIONS.C [--prototypes | --definitions]
- 
-@@ -238,36 +238,36 @@ def extract_ofp_actions(fn, definitions):
-     if n_errors:
-         sys.exit(1)
- 
--    print """\
-+    print("""\
- /* Generated automatically; do not modify!     -*- buffer-read-only: t -*- */
--"""
-+""")
- 
-     if definitions:
--        print "/* Verify that structs used as actions are reasonable sizes. */"
-+        print("/* Verify that structs used as actions are reasonable sizes. */")
-         for s in sorted(arg_structs):
--            print "BUILD_ASSERT_DECL(sizeof(%s) %% OFP_ACTION_ALIGN == 0);" % s
-+            print("BUILD_ASSERT_DECL(sizeof(%s) %% OFP_ACTION_ALIGN == 0);" % s)
- 
--        print "\nstatic struct ofpact_raw_instance all_raw_instances[] = {"
-+        print("\nstatic struct ofpact_raw_instance all_raw_instances[] = {")
-         for vendor in domain:
-             for type_ in domain[vendor]:
-                 for version in domain[vendor][type_]:
-                     d = domain[vendor][type_][version]
--                    print "    { { 0x%08x, %2d, 0x%02x }, " % (
--                        vendor, type_, version)
--                    print "      %s," % d["enum"]
--                    print "      HMAP_NODE_NULL_INITIALIZER,"
--                    print "      HMAP_NODE_NULL_INITIALIZER,"
--                    print "      %s," % d["min_length"]
--                    print "      %s," % d["max_length"]
--                    print "      %s," % d["arg_ofs"]
--                    print "      %s," % d["arg_len"]
--                    print "      \"%s\"," % re.sub('_RAW[0-9]*', '', d["enum"], 1)
-+                    print("    { { 0x%08x, %2d, 0x%02x }, " % (
-+                        vendor, type_, version))
-+                    print("      %s," % d["enum"])
-+                    print("      HMAP_NODE_NULL_INITIALIZER,")
-+                    print("      HMAP_NODE_NULL_INITIALIZER,")
-+                    print("      %s," % d["min_length"])
-+                    print("      %s," % d["max_length"])
-+                    print("      %s," % d["arg_ofs"])
-+                    print("      %s," % d["arg_len"])
-+                    print("      \"%s\"," % re.sub('_RAW[0-9]*', '', d["enum"], 1))
-                     if d["deprecation"]:
--                        print "      \"%s\"," % re.sub(r'(["\\])', r'\\\1', d["deprecation"])
-+                        print("      \"%s\"," % re.sub(r'(["\\])', r'\\\1', d["deprecation"]))
-                     else:
--                        print "      NULL,"
--                    print "    },"
--        print "};";
-+                        print("      NULL,")
-+                    print("    },")
-+        print("};")
- 
-     for versions in enums.values():
-         need_ofp_version = False
-@@ -314,11 +314,11 @@ def extract_ofp_actions(fn, definitions):
-             decl += "}"
-         else:
-             decl += ";"
--        print decl
--        print
-+        print(decl)
-+        print("")
- 
-     if definitions:
--        print """\
-+        print("""\
- static enum ofperr
- ofpact_decode(const struct ofp_action_header *a, enum ofp_raw_action_type raw,
-               enum ofp_version version, uint64_t arg,
-@@ -326,14 +326,14 @@ ofpact_decode(const struct ofp_action_header *a, enum ofp_raw_action_type raw,
-               uint64_t *tlv_bitmap, struct ofpbuf *out)
- {
-     switch (raw) {\
--"""
-+""")
-         for versions in enums.values():
-             enum = versions[0]["enum"]
--            print "    case %s:" % enum
-+            print("    case %s:" % enum)
-             base_argtype = versions[0]["base_argtype"]
-             arg_vl_mff_map = versions[0]["arg_vl_mff_map"]
-             if base_argtype == 'void':
--                print "        return decode_%s(out);" % enum
-+                print("        return decode_%s(out);" % enum)
-             else:
-                 if base_argtype.startswith('struct'):
-                     arg = "ALIGNED_CAST(const %s *, a)" % base_argtype
-@@ -344,16 +344,16 @@ ofpact_decode(const struct ofp_action_header *a, enum ofp_raw_action_type raw,
-                     else:
-                         arg = "arg"
-                 if arg_vl_mff_map:
--                    print "        return decode_%s(%s, version, vl_mff_map, tlv_bitmap, out);" % (enum, arg)
-+                    print("        return decode_%s(%s, version, vl_mff_map, tlv_bitmap, out);" % (enum, arg))
-                 else:
--                    print "        return decode_%s(%s, version, out);" % (enum, arg)
--            print
--        print """\
-+                    print("        return decode_%s(%s, version, out);" % (enum, arg))
-+            print("")
-+        print("""\
-     default:
-         OVS_NOT_REACHED();
-     }
- }\
--"""
-+""")
-     else:
-         for versions in enums.values():
-             enum = versions[0]["enum"]
-@@ -368,15 +368,15 @@ ofpact_decode(const struct ofp_action_header *a, enum ofp_raw_action_type raw,
-                 if arg_vl_mff_map:
-                     prototype += 'const struct vl_mff_map *, uint64_t *, '
-             prototype += "struct ofpbuf *);"
--            print prototype
-+            print(prototype)
- 
--        print """
-+        print("""
- static enum ofperr ofpact_decode(const struct ofp_action_header *,
-                                  enum ofp_raw_action_type raw,
-                                  enum ofp_version version,
-                                  uint64_t arg, const struct vl_mff_map *vl_mff_map,
-                                  uint64_t *tlv_bitmap, struct ofpbuf *out);
--"""
-+""")
- 
- if __name__ == '__main__':
-     if '--help' in sys.argv:
-diff --git a/build-aux/extract-ofp-errors b/build-aux/extract-ofp-errors
-index e36444e..97d62d2 100755
---- a/build-aux/extract-ofp-errors
-+++ b/build-aux/extract-ofp-errors
-@@ -426,7 +426,7 @@ static const struct ofperr_domain %s = {
-                 vendor, type_, code = map[enum]
-                 if code == None:
-                     code = -1
--                print "        { %#8x, %2d, %3d }, /* %s */" % (vendor, type_, code, enum)
-+                print ("        { %#8x, %2d, %3d }, /* %s */" % (vendor, type_, code, enum))
-             else:
-                 print ("        {       -1, -1,  -1 }, /* %s */" % enum)
-         print ("""\
-diff --git a/build-aux/extract-ofp-fields b/build-aux/extract-ofp-fields
-index c248e76..80c7d35 100755
---- a/build-aux/extract-ofp-fields
-+++ b/build-aux/extract-ofp-fields
-@@ -728,7 +728,7 @@ def make_ovs_fields(meta_flow_h, meta_flow_xml):
- ovs\-fields \- protocol header fields in OpenFlow and Open vSwitch
- .
- .PP
--''') % version
-+''' % version)
- 
-     recursively_replace(doc, 'oxm_classes', make_oxm_classes_xml(document))
- 
-diff --git a/build-aux/extract-ofp-msgs b/build-aux/extract-ofp-msgs
-index c2a91f9..92c4bda 100755
---- a/build-aux/extract-ofp-msgs
-+++ b/build-aux/extract-ofp-msgs
-@@ -56,14 +56,14 @@ def fatal(msg):
- 
- def usage():
-     argv0 = os.path.basename(sys.argv[0])
--    print '''\
-+    print('''\
- %(argv0)s, for extracting OpenFlow message types from header files
- usage: %(argv0)s INPUT OUTPUT
-   where INPUT is the name of the input header file
-     and OUTPUT is the output file name.
- Despite OUTPUT, the output is written to stdout, and the OUTPUT argument
- only controls #line directives in the output.\
--''' % {"argv0": argv0}
-+''' % {"argv0": argv0})
-     sys.exit(0)
- 
- def make_sizeof(s):
-@@ -378,5 +378,5 @@ if __name__ == '__main__':
-         line_number = 0
- 
-         for line in extract_ofp_msgs(sys.argv[2]):
--            print line
-+            print(line)
-         
-diff --git a/ovsdb/ovsdb-doc b/ovsdb/ovsdb-doc
-index bdf2dcc..e82ad59 100755
---- a/ovsdb/ovsdb-doc
-+++ b/ovsdb/ovsdb-doc
-@@ -258,7 +258,7 @@ represent strong references; thin lines represent weak references.
-     return s
- 
- def usage():
--    print """\
-+    print("""\
- %(argv0)s: ovsdb schema documentation generator
- Prints documentation for an OVSDB schema as an nroff-formatted manpage.
- usage: %(argv0)s [OPTIONS] SCHEMA XML
-@@ -269,7 +269,7 @@ The following options are also available:
-   --er-diagram=DIAGRAM.PIC    include E-R diagram from DIAGRAM.PIC
-   --version=VERSION           use VERSION to display on document footer
-   -h, --help                  display this help message\
--""" % {'argv0': argv0}
-+""" % {'argv0': argv0})
-     sys.exit(0)
- 
- if __name__ == "__main__":
-@@ -304,7 +304,7 @@ if __name__ == "__main__":
-         for line in s.split("\n"):
-             line = line.strip()
-             if len(line):
--                print line
-+                print(line)
- 
-     except error.Error, e:
-         sys.stderr.write("%s: %s\n" % (argv0, e.msg))
-diff --git a/ovsdb/ovsdb-idlc.in b/ovsdb/ovsdb-idlc.in
-index bfbcf23..62442ee 100755
---- a/ovsdb/ovsdb-idlc.in
-+++ b/ovsdb/ovsdb-idlc.in
-@@ -1,5 +1,6 @@
- #! /usr/bin/env @PYTHON@
- 
-+from __future__ import print_function
- import getopt
- import os
- import re
-@@ -123,7 +124,7 @@ def sorted_columns(table):
- def printCIDLHeader(schemaFile):
-     schema = parseSchema(schemaFile)
-     prefix = schema.idlPrefix
--    print '''\
-+    print('''\
- /* Generated automatically -- do not modify!    -*- buffer-read-only: t -*- */
- 
- #ifndef %(prefix)sIDL_HEADER
-@@ -135,39 +136,39 @@ def printCIDLHeader(schemaFile):
- #include "ovsdb-data.h"
- #include "ovsdb-idl-provider.h"
- #include "smap.h"
--#include "uuid.h"''' % {'prefix': prefix.upper()}
-+#include "uuid.h"''' % {'prefix': prefix.upper()})
- 
-     for tableName, table in sorted(schema.tables.iteritems()):
-         structName = "%s%s" % (prefix, tableName.lower())
- 
--        print ""
--        print "/* %s table. */" % tableName
--        print "struct %s {" % structName
--        print "\tstruct ovsdb_idl_row header_;"
-+        print("")
-+        print("/* %s table. */" % tableName)
-+        print("struct %s {" % structName)
-+        print("\tstruct ovsdb_idl_row header_;")
-         for columnName, column in sorted_columns(table):
--            print "\n\t/* %s column. */" % columnName
-+            print("\n\t/* %s column. */" % columnName)
-             comment, members = cMembers(prefix, tableName,
-                                         columnName, column, False)
-             for member in members:
--                print "\t%(type)s%(name)s;%(comment)s" % member
--        print "};"
-+                print("\t%(type)s%(name)s;%(comment)s" % member)
-+        print("};")
- 
-         # Column indexes.
-         printEnum("%s_column_id" % structName.lower(), ["%s_COL_%s" % (structName.upper(), columnName.upper())
-                                                         for columnName, column in sorted_columns(table)]
-                   + ["%s_N_COLUMNS" % structName.upper()])
- 
--        print
-+        print("")
-         for columnName in table.columns:
--            print "#define %(s)s_col_%(c)s (%(s)s_columns[%(S)s_COL_%(C)s])" % {
-+            print("#define %(s)s_col_%(c)s (%(s)s_columns[%(S)s_COL_%(C)s])" % {
-                 's': structName,
-                 'S': structName.upper(),
-                 'c': columnName,
--                'C': columnName.upper()}
-+                'C': columnName.upper()})
- 
--        print "\nextern struct ovsdb_idl_column %s_columns[%s_N_COLUMNS];" % (structName, structName.upper())
-+        print("\nextern struct ovsdb_idl_column %s_columns[%s_N_COLUMNS];" % (structName, structName.upper()))
- 
--        print '''
-+        print('''
- const struct %(s)s *%(s)s_get_for_uuid(const struct ovsdb_idl *, const struct uuid *);
- const struct %(s)s *%(s)s_first(const struct ovsdb_idl *);
- const struct %(s)s *%(s)s_next(const struct %(s)s *);
-@@ -205,87 +206,87 @@ void %(s)s_init(struct %(s)s *);
- void %(s)s_delete(const struct %(s)s *);
- struct %(s)s *%(s)s_insert(struct ovsdb_idl_txn *);
- bool %(s)s_is_updated(const struct %(s)s *, enum %(s)s_column_id);
--''' % {'s': structName, 'S': structName.upper()}
-+''' % {'s': structName, 'S': structName.upper()})
- 
-         for columnName, column in sorted_columns(table):
--            print 'void %(s)s_verify_%(c)s(const struct %(s)s *);' % {'s': structName, 'c': columnName}
-+            print('void %(s)s_verify_%(c)s(const struct %(s)s *);' % {'s': structName, 'c': columnName})
- 
--        print
-+        print("")
-         for columnName, column in sorted_columns(table):
-             if column.type.value:
-                 valueParam = ', enum ovsdb_atomic_type value_type'
-             else:
-                 valueParam = ''
--            print 'const struct ovsdb_datum *%(s)s_get_%(c)s(const struct %(s)s *, enum ovsdb_atomic_type key_type%(v)s);' % {
--                's': structName, 'c': columnName, 'v': valueParam}
-+            print('const struct ovsdb_datum *%(s)s_get_%(c)s(const struct %(s)s *, enum ovsdb_atomic_type key_type%(v)s);' % {
-+                's': structName, 'c': columnName, 'v': valueParam})
- 
--        print
-+        print("")
-         for columnName, column in sorted_columns(table):
--            print 'void %(s)s_set_%(c)s(const struct %(s)s *,' % {'s': structName, 'c': columnName},
-+            print('void %(s)s_set_%(c)s(const struct %(s)s *,' % {'s': structName, 'c': columnName}, end=' ')
-             if column.type.is_smap():
-                 args = ['const struct smap *']
-             else:
-                 comment, members = cMembers(prefix, tableName, columnName,
-                                             column, True)
-                 args = ['%(type)s%(name)s' % member for member in members]
--            print '%s);' % ', '.join(args)
-+            print('%s);' % ', '.join(args))
- 
--        print
-+        print("")
-         for columnName, column in sorted_columns(table):
-             if column.type.is_map():
--                print 'void %(s)s_update_%(c)s_setkey(const struct %(s)s *, ' % {'s': structName, 'c': columnName},
--                print '%(coltype)s, %(valtype)s);' % {'coltype':column.type.key.to_const_c_type(prefix), 'valtype':column.type.value.to_const_c_type(prefix)}
--                print 'void %(s)s_update_%(c)s_delkey(const struct %(s)s *, ' % {'s': structName, 'c': columnName},
--                print '%(coltype)s);' % {'coltype':column.type.key.to_const_c_type(prefix)}
-+                print('void %(s)s_update_%(c)s_setkey(const struct %(s)s *, ' % {'s': structName, 'c': columnName}, end=' ')
-+                print('%(coltype)s, %(valtype)s);' % {'coltype':column.type.key.to_const_c_type(prefix), 'valtype':column.type.value.to_const_c_type(prefix)})
-+                print('void %(s)s_update_%(c)s_delkey(const struct %(s)s *, ' % {'s': structName, 'c': columnName}, end=' ')
-+                print('%(coltype)s);' % {'coltype':column.type.key.to_const_c_type(prefix)})
-             if column.type.is_set():
--                print 'void %(s)s_update_%(c)s_addvalue(const struct %(s)s *, ' % {'s': structName, 'c': columnName},
--                print '%(valtype)s);' % {'valtype':column.type.key.to_const_c_type(prefix)}
--                print 'void %(s)s_update_%(c)s_delvalue(const struct %(s)s *, ' % {'s': structName, 'c': columnName},
--                print '%(valtype)s);' % {'valtype':column.type.key.to_const_c_type(prefix)}
-+                print('void %(s)s_update_%(c)s_addvalue(const struct %(s)s *, ' % {'s': structName, 'c': columnName}, end=' ')
-+                print('%(valtype)s);' % {'valtype':column.type.key.to_const_c_type(prefix)})
-+                print('void %(s)s_update_%(c)s_delvalue(const struct %(s)s *, ' % {'s': structName, 'c': columnName}, end=' ')
-+                print('%(valtype)s);' % {'valtype':column.type.key.to_const_c_type(prefix)})
- 
--            print 'void %(s)s_add_clause_%(c)s(struct ovsdb_idl_condition *, enum ovsdb_function function,' % {'s': structName, 'c': columnName},
-+            print('void %(s)s_add_clause_%(c)s(struct ovsdb_idl_condition *, enum ovsdb_function function,' % {'s': structName, 'c': columnName}, end=' ')
-             if column.type.is_smap():
-                 args = ['const struct smap *']
-             else:
-                 comment, members = cMembers(prefix, tableName, columnName,
-                                             column, True, refTable=False)
-                 args = ['%(type)s%(name)s' % member for member in members]
--            print '%s);' % ', '.join(args)
-+            print('%s);' % ', '.join(args))
- 
--            print 'void %(s)s_set_condition(struct ovsdb_idl *, struct ovsdb_idl_condition *);' % {'s': structName},
-+            print('void %(s)s_set_condition(struct ovsdb_idl *, struct ovsdb_idl_condition *);' % {'s': structName})
- 
--        print
-+        print("")
- 
-     # Table indexes.
-     printEnum("%stable_id" % prefix.lower(), ["%sTABLE_%s" % (prefix.upper(), tableName.upper()) for tableName in sorted(schema.tables)] + ["%sN_TABLES" % prefix.upper()])
--    print
-+    print("")
-     for tableName in schema.tables:
--        print "#define %(p)stable_%(t)s (%(p)stable_classes[%(P)sTABLE_%(T)s])" % {
-+        print("#define %(p)stable_%(t)s (%(p)stable_classes[%(P)sTABLE_%(T)s])" % {
-             'p': prefix,
-             'P': prefix.upper(),
-             't': tableName.lower(),
--            'T': tableName.upper()}
--    print "\nextern struct ovsdb_idl_table_class %stable_classes[%sN_TABLES];" % (prefix, prefix.upper())
-+            'T': tableName.upper()})
-+    print("\nextern struct ovsdb_idl_table_class %stable_classes[%sN_TABLES];" % (prefix, prefix.upper()))
- 
--    print "\nextern struct ovsdb_idl_class %sidl_class;" % prefix
-+    print("\nextern struct ovsdb_idl_class %sidl_class;" % prefix)
- 
--    print "\nconst char * %sget_db_version(void);" % prefix
--    print "\n#endif /* %(prefix)sIDL_HEADER */" % {'prefix': prefix.upper()}
-+    print("\nconst char * %sget_db_version(void);" % prefix)
-+    print("\n#endif /* %(prefix)sIDL_HEADER */" % {'prefix': prefix.upper()})
- 
- def printEnum(type, members):
-     if len(members) == 0:
-         return
- 
--    print "\nenum %s {" % type
-+    print("\nenum %s {" % type)
-     for member in members[:-1]:
--        print "    %s," % member
--    print "    %s" % members[-1]
--    print "};"
-+        print("    %s," % member)
-+    print("    %s" % members[-1])
-+    print("};")
- 
- def printCIDLSource(schemaFile):
-     schema = parseSchema(schemaFile)
-     prefix = schema.idlPrefix
--    print '''\
-+    print('''\
- /* Generated automatically -- do not modify!    -*- buffer-read-only: t -*- */
- 
- #include <config.h>
-@@ -296,33 +297,33 @@ def printCIDLSource(schemaFile):
- #include "ovsdb-error.h"
- #include "util.h"
- 
--''' % schema.idlHeader
-+''' % schema.idlHeader)
- 
-     # Cast functions.
-     for tableName, table in sorted(schema.tables.iteritems()):
-         structName = "%s%s" % (prefix, tableName.lower())
--        print '''
-+        print('''
- static struct %(s)s *
- %(s)s_cast(const struct ovsdb_idl_row *row)
- {
-     return row ? CONTAINER_OF(row, struct %(s)s, header_) : NULL;
- }\
--''' % {'s': structName}
-+''' % {'s': structName})
- 
- 
-     for tableName, table in sorted(schema.tables.iteritems()):
-         structName = "%s%s" % (prefix, tableName.lower())
--        print ""
--        print "/* %s table. */" % (tableName)
-+        print("")
-+        print("/* %s table. */" % (tableName))
- 
-         # Parse functions.
-         for columnName, column in sorted_columns(table):
--            print '''
-+            print('''
- static void
- %(s)s_parse_%(c)s(struct ovsdb_idl_row *row_, const struct ovsdb_datum *datum)
- {
-     struct %(s)s *row = %(s)s_cast(row_);''' % {'s': structName,
--                                                'c': columnName}
-+                                                'c': columnName})
-             type = column.type
-             if type.value:
-                 keyVar = "row->key_%s" % columnName
-@@ -332,89 +333,89 @@ static void
-                 valueVar = None
- 
-             if type.is_smap():
--                print "    smap_init(&row->%s);" % columnName
--                print "    for (size_t i = 0; i < datum->n; i++) {"
--                print "        smap_add(&row->%s," % columnName
--                print "                 datum->keys[i].string,"
--                print "                 datum->values[i].string);"
--                print "    }"
-+                print("    smap_init(&row->%s);" % columnName)
-+                print("    for (size_t i = 0; i < datum->n; i++) {")
-+                print("        smap_add(&row->%s," % columnName)
-+                print("                 datum->keys[i].string,")
-+                print("                 datum->values[i].string);")
-+                print("    }")
-             elif (type.n_min == 1 and type.n_max == 1) or type.is_optional_pointer():
--                print
--                print "    if (datum->n >= 1) {"
-+                print("")
-+                print("    if (datum->n >= 1) {")
-                 if not type.key.ref_table:
--                    print "        %s = datum->keys[0].%s;" % (keyVar, type.key.type.to_string())
-+                    print("        %s = datum->keys[0].%s;" % (keyVar, type.key.type.to_string()))
-                 else:
--                    print "        %s = %s%s_cast(ovsdb_idl_get_row_arc(row_, &%stable_%s, &datum->keys[0].uuid));" % (keyVar, prefix, type.key.ref_table.name.lower(), prefix, type.key.ref_table.name.lower())
-+                    print("        %s = %s%s_cast(ovsdb_idl_get_row_arc(row_, &%stable_%s, &datum->keys[0].uuid));" % (keyVar, prefix, type.key.ref_table.name.lower(), prefix, type.key.ref_table.name.lower()))
- 
-                 if valueVar:
-                     if not type.value.ref_table:
--                        print "        %s = datum->values[0].%s;" % (valueVar, type.value.type.to_string())
-+                        print("        %s = datum->values[0].%s;" % (valueVar, type.value.type.to_string()))
-                     else:
--                        print "        %s = %s%s_cast(ovsdb_idl_get_row_arc(row_, &%stable_%s, &datum->values[0].uuid));" % (valueVar, prefix, type.value.ref_table.name.lower(), prefix, type.value.ref_table.name.lower())
--                print "    } else {"
--                print "        %s" % type.key.initCDefault(keyVar, type.n_min == 0)
-+                        print("        %s = %s%s_cast(ovsdb_idl_get_row_arc(row_, &%stable_%s, &datum->values[0].uuid));" % (valueVar, prefix, type.value.ref_table.name.lower(), prefix, type.value.ref_table.name.lower()))
-+                print("    } else {")
-+                print("        %s" % type.key.initCDefault(keyVar, type.n_min == 0))
-                 if valueVar:
--                    print "        %s" % type.value.initCDefault(valueVar, type.n_min == 0)
--                print "    }"
-+                    print("        %s" % type.value.initCDefault(valueVar, type.n_min == 0))
-+                print("    }")
-             else:
-                 if type.n_max != sys.maxint:
--                    print "    size_t n = MIN(%d, datum->n);" % type.n_max
-+                    print("    size_t n = MIN(%d, datum->n);" % type.n_max)
-                     nMax = "n"
-                 else:
-                     nMax = "datum->n"
--                print "    %s = NULL;" % keyVar
-+                print("    %s = NULL;" % keyVar)
-                 if valueVar:
--                    print "    %s = NULL;" % valueVar
--                print "    row->n_%s = 0;" % columnName
--                print "    for (size_t i = 0; i < %s; i++) {" % nMax
-+                    print("    %s = NULL;" % valueVar)
-+                print("    row->n_%s = 0;" % columnName)
-+                print("    for (size_t i = 0; i < %s; i++) {" % nMax)
-                 if type.key.ref_table:
--                    print """\
-+                    print("""\
-         struct %s%s *keyRow = %s%s_cast(ovsdb_idl_get_row_arc(row_, &%stable_%s, &datum->keys[i].uuid));
-         if (!keyRow) {
-             continue;
-         }\
--""" % (prefix, type.key.ref_table.name.lower(), prefix, type.key.ref_table.name.lower(), prefix, type.key.ref_table.name.lower())
-+""" % (prefix, type.key.ref_table.name.lower(), prefix, type.key.ref_table.name.lower(), prefix, type.key.ref_table.name.lower()))
-                     keySrc = "keyRow"
-                 else:
-                     keySrc = "datum->keys[i].%s" % type.key.type.to_string()
-                 if type.value and type.value.ref_table:
--                    print """\
-+                    print("""\
-         struct %s%s *valueRow = %s%s_cast(ovsdb_idl_get_row_arc(row_, &%stable_%s, &datum->values[i].uuid));
-         if (!valueRow) {
-             continue;
-         }\
--""" % (prefix, type.value.ref_table.name.lower(), prefix, type.value.ref_table.name.lower(), prefix, type.value.ref_table.name.lower())
-+""" % (prefix, type.value.ref_table.name.lower(), prefix, type.value.ref_table.name.lower(), prefix, type.value.ref_table.name.lower()))
-                     valueSrc = "valueRow"
-                 elif valueVar:
-                     valueSrc = "datum->values[i].%s" % type.value.type.to_string()
--                print "        if (!row->n_%s) {" % (columnName)
-+                print("        if (!row->n_%s) {" % (columnName))
- 
--                print "            %s = xmalloc(%s * sizeof *%s);" % (
--                    keyVar, nMax, keyVar)
-+                print("            %s = xmalloc(%s * sizeof *%s);" % (
-+                    keyVar, nMax, keyVar))
-                 if valueVar:
--                    print "            %s = xmalloc(%s * sizeof *%s);" % (
--                        valueVar, nMax, valueVar)
--                print "        }"
--                print "        %s[row->n_%s] = %s;" % (keyVar, columnName, keySrc)
-+                    print("            %s = xmalloc(%s * sizeof *%s);" % (
-+                        valueVar, nMax, valueVar))
-+                print("        }")
-+                print("        %s[row->n_%s] = %s;" % (keyVar, columnName, keySrc))
-                 if valueVar:
--                    print "        %s[row->n_%s] = %s;" % (valueVar, columnName, valueSrc)
--                print "        row->n_%s++;" % columnName
--                print "    }"
--            print "}"
-+                    print("        %s[row->n_%s] = %s;" % (valueVar, columnName, valueSrc))
-+                print("        row->n_%s++;" % columnName)
-+                print("    }")
-+            print("}")
- 
-         # Unparse functions.
-         for columnName, column in sorted_columns(table):
-             type = column.type
-             if type.is_smap() or (type.n_min != 1 or type.n_max != 1) and not type.is_optional_pointer():
--                print '''
-+                print('''
- static void
- %(s)s_unparse_%(c)s(struct ovsdb_idl_row *row_)
- {
-     struct %(s)s *row = %(s)s_cast(row_);''' % {'s': structName,
--                                                'c': columnName}
-+                                                'c': columnName})
- 
-                 if type.is_smap():
--                    print "    smap_destroy(&row->%s);" % columnName
-+                    print("    smap_destroy(&row->%s);" % columnName)
-                 else:
-                     if type.value:
-                         keyVar = "row->key_%s" % columnName
-@@ -422,45 +423,45 @@ static void
-                     else:
-                         keyVar = "row->%s" % columnName
-                         valueVar = None
--                    print "    free(%s);" % keyVar
-+                    print("    free(%s);" % keyVar)
-                     if valueVar:
--                        print "    free(%s);" % valueVar
--                print '}'
-+                        print("    free(%s);" % valueVar)
-+                print('}')
-             else:
--                print '''
-+                print('''
- static void
- %(s)s_unparse_%(c)s(struct ovsdb_idl_row *row OVS_UNUSED)
- {
-     /* Nothing to do. */
--}''' % {'s': structName, 'c': columnName}
-+}''' % {'s': structName, 'c': columnName})
- 
-         # Generic Row Initialization function.
--        print """
-+        print("""
- static void
- %(s)s_init__(struct ovsdb_idl_row *row)
- {
-     %(s)s_init(%(s)s_cast(row));
--}""" % {'s': structName}
-+}""" % {'s': structName})
- 
-         # Row Initialization function.
--        print """
-+        print("""
- /* Clears the contents of 'row' in table "%(t)s". */
- void
- %(s)s_init(struct %(s)s *row)
- {
--    memset(row, 0, sizeof *row); """ % {'s': structName, 't': tableName}
-+    memset(row, 0, sizeof *row); """ % {'s': structName, 't': tableName})
-         for columnName, column in sorted_columns(table):
-             if column.type.is_smap():
--                print "    smap_init(&row->%s);" % columnName
-+                print("    smap_init(&row->%s);" % columnName)
-             elif (column.type.n_min == 1 and
-                   column.type.n_max == 1 and
-                   column.type.key.type == ovs.db.types.StringType and
-                   not column.type.value):
--                print "    row->%s = \"\";" % columnName
--        print "}"
-+                print("    row->%s = \"\";" % columnName)
-+        print("}")
- 
-         # First, next functions.
--        print '''
-+        print('''
- /* Searches table "%(t)s" in 'idl' for a row with UUID 'uuid'.  Returns
-  * a pointer to the row if there is one, otherwise a null pointer.  */
- const struct %(s)s *
-@@ -514,9 +515,9 @@ const struct %(s)s
-         'P': prefix.upper(),
-         't': tableName,
-         'tl': tableName.lower(),
--        'T': tableName.upper()}
-+        'T': tableName.upper()})
- 
--        print '''
-+        print('''
- 
- /* Deletes 'row' from table "%(t)s".  'row' may be freed, so it must not be
-  * accessed afterward.
-@@ -550,11 +551,11 @@ bool
-         'P': prefix.upper(),
-         't': tableName,
-         'tl': tableName.lower(),
--        'T': tableName.upper()}
-+        'T': tableName.upper()})
- 
-         # Verify functions.
-         for columnName, column in sorted_columns(table):
--            print '''
-+            print('''
- /* Causes the original contents of column "%(c)s" in 'row' to be
-  * verified as a prerequisite to completing the transaction.  That is, if
-  * "%(c)s" in 'row' changed (or if 'row' was deleted) between the
-@@ -585,7 +586,7 @@ void
- }''' % {'s': structName,
-         'S': structName.upper(),
-         'c': columnName,
--        'C': columnName.upper()}
-+        'C': columnName.upper()})
- 
-         # Get functions.
-         for columnName, column in sorted_columns(table):
-@@ -597,7 +598,7 @@ void
-                 valueParam = ''
-                 valueType = ''
-                 valueComment = ''
--            print """
-+            print("""
- /* Returns the "%(c)s" column's value from the "%(t)s" table in 'row'
-  * as a struct ovsdb_datum.  This is useful occasionally: for example,
-  * ovsdb_datum_find_key() is an easier and more efficient way to search
-@@ -625,7 +626,7 @@ const struct ovsdb_datum *
-     return ovsdb_idl_read(&row->header_, &%(s)s_col_%(c)s);
- }""" % {'t': tableName, 's': structName, 'c': columnName,
-        'kt': column.type.key.toAtomicType(),
--       'v': valueParam, 'vt': valueType, 'vc': valueComment}
-+       'v': valueParam, 'vt': valueType, 'vc': valueComment})
- 
-         # Set functions.
-         for columnName, column in sorted_columns(table):
-@@ -635,8 +636,8 @@ const struct ovsdb_datum *
-                                         column, True)
- 
-             if type.is_smap():
--                print comment
--                print """void
-+                print(comment)
-+                print("""void
- %(s)s_set_%(c)s(const struct %(s)s *row, const struct smap *%(c)s)
- {
-     struct ovsdb_datum datum;
-@@ -654,7 +655,7 @@ const struct ovsdb_datum *
-        's': structName,
-        'S': structName.upper(),
-        'c': columnName,
--       'C': columnName.upper()}
-+       'C': columnName.upper()})
-                 continue
- 
-             keyVar = members[0]['name']
-@@ -668,84 +669,84 @@ const struct ovsdb_datum *
-                 if len(members) > 1:
-                     nVar = members[1]['name']
- 
--            print comment
--            print """\
-+            print(comment)
-+            print("""\
- void
- %(s)s_set_%(c)s(const struct %(s)s *row, %(args)s)
- {
-     struct ovsdb_datum datum;""" % {'s': structName,
-         'c': columnName,
-         'args': ', '.join(['%(type)s%(name)s'
--                           % m for m in members])}
-+                           % m for m in members])})
-             if type.n_min == 1 and type.n_max == 1:
--                print "    union ovsdb_atom key;"
-+                print("    union ovsdb_atom key;")
-                 if type.value:
--                    print "    union ovsdb_atom value;"
--                print
--                print "    datum.n = 1;"
--                print "    datum.keys = &key;"
--                print "    " + type.key.assign_c_value_casting_away_const("key.%s" % type.key.type.to_string(), keyVar)
-+                    print("    union ovsdb_atom value;")
-+                print("")
-+                print("    datum.n = 1;")
-+                print("    datum.keys = &key;")
-+                print("    " + type.key.assign_c_value_casting_away_const("key.%s" % type.key.type.to_string(), keyVar))
-                 if type.value:
--                    print "    datum.values = &value;"
--                    print "    "+ type.value.assign_c_value_casting_away_const("value.%s" % type.value.type.to_string(), valueVar)
-+                    print("    datum.values = &value;")
-+                    print("    "+ type.value.assign_c_value_casting_away_const("value.%s" % type.value.type.to_string(), valueVar))
-                 else:
--                    print "    datum.values = NULL;"
-+                    print("    datum.values = NULL;")
-                 txn_write_func = "ovsdb_idl_txn_write_clone"
-             elif type.is_optional_pointer():
--                print "    union ovsdb_atom key;"
--                print
--                print "    if (%s) {" % keyVar
--                print "        datum.n = 1;"
--                print "        datum.keys = &key;"
--                print "        " + type.key.assign_c_value_casting_away_const("key.%s" % type.key.type.to_string(), keyVar)
--                print "    } else {"
--                print "        datum.n = 0;"
--                print "        datum.keys = NULL;"
--                print "    }"
--                print "    datum.values = NULL;"
-+                print("    union ovsdb_atom key;")
-+                print("")
-+                print("    if (%s) {" % keyVar)
-+                print("        datum.n = 1;")
-+                print("        datum.keys = &key;")
-+                print("        " + type.key.assign_c_value_casting_away_const("key.%s" % type.key.type.to_string(), keyVar))
-+                print("    } else {")
-+                print("        datum.n = 0;")
-+                print("        datum.keys = NULL;")
-+                print("    }")
-+                print("    datum.values = NULL;")
-                 txn_write_func = "ovsdb_idl_txn_write_clone"
-             elif type.n_max == 1:
--                print "    union ovsdb_atom key;"
--                print
--                print "    if (%s) {" % nVar
--                print "        datum.n = 1;"
--                print "        datum.keys = &key;"
--                print "        " + type.key.assign_c_value_casting_away_const("key.%s" % type.key.type.to_string(), "*" + keyVar)
--                print "    } else {"
--                print "        datum.n = 0;"
--                print "        datum.keys = NULL;"
--                print "    }"
--                print "    datum.values = NULL;"
-+                print("    union ovsdb_atom key;")
-+                print("")
-+                print("    if (%s) {" % nVar)
-+                print("        datum.n = 1;")
-+                print("        datum.keys = &key;")
-+                print("        " + type.key.assign_c_value_casting_away_const("key.%s" % type.key.type.to_string(), "*" + keyVar))
-+                print("    } else {")
-+                print("        datum.n = 0;")
-+                print("        datum.keys = NULL;")
-+                print("    }")
-+                print("    datum.values = NULL;")
-                 txn_write_func = "ovsdb_idl_txn_write_clone"
-             else:
--                print
--                print "    datum.n = %s;" % nVar
--                print "    datum.keys = %s ? xmalloc(%s * sizeof *datum.keys) : NULL;" % (nVar, nVar)
-+                print("")
-+                print("    datum.n = %s;" % nVar)
-+                print("    datum.keys = %s ? xmalloc(%s * sizeof *datum.keys) : NULL;" % (nVar, nVar))
-                 if type.value:
--                    print "    datum.values = xmalloc(%s * sizeof *datum.values);" % nVar
-+                    print("    datum.values = xmalloc(%s * sizeof *datum.values);" % nVar)
-                 else:
--                    print "    datum.values = NULL;"
--                print "    for (size_t i = 0; i < %s; i++) {" % nVar
--                print "        " + type.key.copyCValue("datum.keys[i].%s" % type.key.type.to_string(), "%s[i]" % keyVar)
-+                    print("    datum.values = NULL;")
-+                print("    for (size_t i = 0; i < %s; i++) {" % nVar)
-+                print("        " + type.key.copyCValue("datum.keys[i].%s" % type.key.type.to_string(), "%s[i]" % keyVar))
-                 if type.value:
--                    print "        " + type.value.copyCValue("datum.values[i].%s" % type.value.type.to_string(), "%s[i]" % valueVar)
--                print "    }"
-+                    print("        " + type.value.copyCValue("datum.values[i].%s" % type.value.type.to_string(), "%s[i]" % valueVar))
-+                print("    }")
-                 if type.value:
-                     valueType = type.value.toAtomicType()
-                 else:
-                     valueType = "OVSDB_TYPE_VOID"
-                 txn_write_func = "ovsdb_idl_txn_write"
--            print "    %(f)s(&row->header_, &%(s)s_col_%(c)s, &datum);" \
-+            print("    %(f)s(&row->header_, &%(s)s_col_%(c)s, &datum);" \
-                 % {'f': txn_write_func,
-                    's': structName,
-                    'S': structName.upper(),
--                   'c': columnName}
--            print "}"
-+                   'c': columnName})
-+            print("}")
-         # Update/Delete of partial map column functions
-         for columnName, column in sorted_columns(table):
-             type = column.type
-             if type.is_map():
--                print '''
-+                print('''
- /* Sets an element of the "%(c)s" map column from the "%(t)s" table in 'row'
-  * to 'new_value' given the key value 'new_key'.
-  *
-@@ -761,17 +762,17 @@ void
-     datum->values = xmalloc(datum->n * sizeof *datum->values);
- ''' % {'s': structName, 'c': columnName,'coltype':column.type.key.to_const_c_type(prefix),
-         'valtype':column.type.value.to_const_c_type(prefix), 'S': structName.upper(),
--        'C': columnName.upper(), 't': tableName}
-+        'C': columnName.upper(), 't': tableName})
- 
--                print "    "+ type.key.copyCValue("datum->keys[0].%s" % type.key.type.to_string(), "new_key")
--                print "    "+ type.value.copyCValue("datum->values[0].%s" % type.value.type.to_string(), "new_value")
--                print '''
-+                print("    "+ type.key.copyCValue("datum->keys[0].%s" % type.key.type.to_string(), "new_key"))
-+                print("    "+ type.value.copyCValue("datum->values[0].%s" % type.value.type.to_string(), "new_value"))
-+                print('''
-     ovsdb_idl_txn_write_partial_map(&row->header_,
-                                     &%(s)s_col_%(c)s,
-                                     datum);
- }''' % {'s': structName, 'c': columnName,'coltype':column.type.key.toCType(prefix),
--        'valtype':column.type.value.to_const_c_type(prefix), 'S': structName.upper()}
--                print '''
-+        'valtype':column.type.value.to_const_c_type(prefix), 'S': structName.upper()})
-+                print('''
- /* Deletes an element of the "%(c)s" map column from the "%(t)s" table in 'row'
-  * given the key value 'delete_key'.
-  *
-@@ -787,19 +788,19 @@ void
-     datum->values = NULL;
- ''' % {'s': structName, 'c': columnName,'coltype':column.type.key.to_const_c_type(prefix),
-         'valtype':column.type.value.to_const_c_type(prefix), 'S': structName.upper(),
--        'C': columnName.upper(), 't': tableName}
-+        'C': columnName.upper(), 't': tableName})
- 
--                print "    "+ type.key.copyCValue("datum->keys[0].%s" % type.key.type.to_string(), "delete_key")
--                print '''
-+                print("    "+ type.key.copyCValue("datum->keys[0].%s" % type.key.type.to_string(), "delete_key"))
-+                print('''
-     ovsdb_idl_txn_delete_partial_map(&row->header_,
-                                     &%(s)s_col_%(c)s,
-                                     datum);
- }''' % {'s': structName, 'c': columnName,'coltype':column.type.key.toCType(prefix),
--        'valtype':column.type.value.to_const_c_type(prefix), 'S': structName.upper()}
-+        'valtype':column.type.value.to_const_c_type(prefix), 'S': structName.upper()})
-         # End Update/Delete of partial maps
-         # Update/Delete of partial set column functions
-             if type.is_set():
--                print '''
-+                print('''
- /* Adds the value 'new_value' to the "%(c)s" set column from the "%(t)s" table
-  * in 'row'.
-  *
-@@ -814,16 +815,16 @@ void
-     datum->keys = xmalloc(datum->n * sizeof *datum->values);
-     datum->values = NULL;
- ''' % {'s': structName, 'c': columnName,
--        'valtype':column.type.key.to_const_c_type(prefix), 't': tableName}
-+        'valtype':column.type.key.to_const_c_type(prefix), 't': tableName})
- 
--                print "    "+ type.key.copyCValue("datum->keys[0].%s" % type.key.type.to_string(), "new_value")
--                print '''
-+                print("    "+ type.key.copyCValue("datum->keys[0].%s" % type.key.type.to_string(), "new_value"))
-+                print('''
-     ovsdb_idl_txn_write_partial_set(&row->header_,
-                                     &%(s)s_col_%(c)s,
-                                     datum);
- }''' % {'s': structName, 'c': columnName,'coltype':column.type.key.toCType(prefix),
--        'valtype':column.type.key.to_const_c_type(prefix), 'S': structName.upper()}
--                print '''
-+        'valtype':column.type.key.to_const_c_type(prefix), 'S': structName.upper()})
-+                print('''
- /* Deletes the value 'delete_value' from the "%(c)s" set column from the
-  * "%(t)s" table in 'row'.
-  *
-@@ -839,15 +840,15 @@ void
-     datum->values = NULL;
- ''' % {'s': structName, 'c': columnName,'coltype':column.type.key.to_const_c_type(prefix),
-         'valtype':column.type.key.to_const_c_type(prefix), 'S': structName.upper(),
--        'C': columnName.upper(), 't': tableName}
-+        'C': columnName.upper(), 't': tableName})
- 
--                print "    "+ type.key.copyCValue("datum->keys[0].%s" % type.key.type.to_string(), "delete_value")
--                print '''
-+                print("    "+ type.key.copyCValue("datum->keys[0].%s" % type.key.type.to_string(), "delete_value"))
-+                print('''
-     ovsdb_idl_txn_delete_partial_set(&row->header_,
-                                     &%(s)s_col_%(c)s,
-                                     datum);
- }''' % {'s': structName, 'c': columnName,'coltype':column.type.key.toCType(prefix),
--        'valtype':column.type.key.to_const_c_type(prefix), 'S': structName.upper()}
-+        'valtype':column.type.key.to_const_c_type(prefix), 'S': structName.upper()})
-         # End Update/Delete of partial set
- 
-         # Add clause functions.
-@@ -858,8 +859,8 @@ void
-                                         column, True, refTable=False)
- 
-             if type.is_smap():
--                print comment
--                print """void
-+                print(comment)
-+                print("""void
- %(s)s_add_clause_%(c)s(struct ovsdb_idl_condition *cond, enum ovsdb_function function, const struct smap *%(c)s)
- {
-     struct ovsdb_datum datum;
-@@ -884,7 +885,7 @@ void
-        'P': prefix.upper(),
-        's': structName,
-        'S': structName.upper(),
--       'c': columnName}
-+       'c': columnName})
-                 continue
- 
-             keyVar = members[0]['name']
-@@ -898,73 +899,73 @@ void
-                 if len(members) > 1:
-                     nVar = members[1]['name']
- 
--            print comment
--            print 'void'
--            print '%(s)s_add_clause_%(c)s(struct ovsdb_idl_condition *cond, enum ovsdb_function function, %(args)s)' % \
-+            print(comment)
-+            print('void')
-+            print('%(s)s_add_clause_%(c)s(struct ovsdb_idl_condition *cond, enum ovsdb_function function, %(args)s)' % \
-                 {'s': structName, 'c': columnName,
--                 'args': ', '.join(['%(type)s%(name)s' % m for m in members])}
--            print "{"
--            print "    struct ovsdb_datum datum;"
-+                 'args': ', '.join(['%(type)s%(name)s' % m for m in members])})
-+            print("{")
-+            print("    struct ovsdb_datum datum;")
-             free = []
-             if type.n_min == 1 and type.n_max == 1:
--                print "    union ovsdb_atom key;"
-+                print("    union ovsdb_atom key;")
-                 if type.value:
--                    print "    union ovsdb_atom value;"
--                print
--                print "    datum.n = 1;"
--                print "    datum.keys = &key;"
--                print "    " + type.key.assign_c_value_casting_away_const("key.%s" % type.key.type.to_string(), keyVar, refTable=False)
-+                    print("    union ovsdb_atom value;")
-+                print("")
-+                print("    datum.n = 1;")
-+                print("    datum.keys = &key;")
-+                print("    " + type.key.assign_c_value_casting_away_const("key.%s" % type.key.type.to_string(), keyVar, refTable=False))
-                 if type.value:
--                    print "    datum.values = &value;"
--                    print "    "+ type.value.assign_c_value_casting_away_const("value.%s" % type.value.type.to_string(), valueVar, refTable=False)
-+                    print("    datum.values = &value;")
-+                    print("    "+ type.value.assign_c_value_casting_away_const("value.%s" % type.value.type.to_string(), valueVar, refTable=False))
-                 else:
--                    print "    datum.values = NULL;"
-+                    print("    datum.values = NULL;")
-             elif type.is_optional_pointer():
--                print "    union ovsdb_atom key;"
--                print
--                print "    if (%s) {" % keyVar
--                print "        datum.n = 1;"
--                print "        datum.keys = &key;"
--                print "        " + type.key.assign_c_value_casting_away_const("key.%s" % type.key.type.to_string(), keyVar, refTable=False)
--                print "    } else {"
--                print "        datum.n = 0;"
--                print "        datum.keys = NULL;"
--                print "    }"
--                print "    datum.values = NULL;"
-+                print("    union ovsdb_atom key;")
-+                print("")
-+                print("    if (%s) {" % keyVar)
-+                print("        datum.n = 1;")
-+                print("        datum.keys = &key;")
-+                print("        " + type.key.assign_c_value_casting_away_const("key.%s" % type.key.type.to_string(), keyVar, refTable=False))
-+                print("    } else {")
-+                print("        datum.n = 0;")
-+                print("        datum.keys = NULL;")
-+                print("    }")
-+                print("    datum.values = NULL;")
-             elif type.n_max == 1:
--                print "    union ovsdb_atom key;"
--                print
--                print "    if (%s) {" % nVar
--                print "        datum.n = 1;"
--                print "        datum.keys = &key;"
--                print "        " + type.key.assign_c_value_casting_away_const("key.%s" % type.key.type.to_string(), "*" + keyVar, refTable=False)
--                print "    } else {"
--                print "        datum.n = 0;"
--                print "        datum.keys = NULL;"
--                print "    }"
--                print "    datum.values = NULL;"
-+                print("    union ovsdb_atom key;")
-+                print("")
-+                print("    if (%s) {" % nVar)
-+                print("        datum.n = 1;")
-+                print("        datum.keys = &key;")
-+                print("        " + type.key.assign_c_value_casting_away_const("key.%s" % type.key.type.to_string(), "*" + keyVar, refTable=False))
-+                print("    } else {")
-+                print("        datum.n = 0;")
-+                print("        datum.keys = NULL;")
-+                print("    }")
-+                print("    datum.values = NULL;")
-             else:
--                print "    datum.n = %s;" % nVar
--                print "    datum.keys = %s ? xmalloc(%s * sizeof *datum.keys) : NULL;" % (nVar, nVar)
-+                print("    datum.n = %s;" % nVar)
-+                print("    datum.keys = %s ? xmalloc(%s * sizeof *datum.keys) : NULL;" % (nVar, nVar))
-                 free += ['datum.keys']
-                 if type.value:
--                    print "    datum.values = xmalloc(%s * sizeof *datum.values);" % nVar
-+                    print("    datum.values = xmalloc(%s * sizeof *datum.values);" % nVar)
-                     free += ['datum.values']
-                 else:
--                    print "    datum.values = NULL;"
--                print "    for (size_t i = 0; i < %s; i++) {" % nVar
--                print "        " + type.key.assign_c_value_casting_away_const("datum.keys[i].%s" % type.key.type.to_string(), "%s[i]" % keyVar, refTable=False)
-+                    print("    datum.values = NULL;")
-+                print("    for (size_t i = 0; i < %s; i++) {" % nVar)
-+                print("        " + type.key.assign_c_value_casting_away_const("datum.keys[i].%s" % type.key.type.to_string(), "%s[i]" % keyVar, refTable=False))
-                 if type.value:
--                    print "        " + type.value.assign_c_value_casting_away_const("datum.values[i].%s" % type.value.type.to_string(), "%s[i]" % valueVar, refTable=False)
--                print "    }"
-+                    print("        " + type.value.assign_c_value_casting_away_const("datum.values[i].%s" % type.value.type.to_string(), "%s[i]" % valueVar, refTable=False))
-+                print("    }")
-                 if type.value:
-                     valueType = type.value.toAtomicType()
-                 else:
-                     valueType = "OVSDB_TYPE_VOID"
--                print "    ovsdb_datum_sort_unique(&datum, %s, %s);" % (
--                    type.key.toAtomicType(), valueType)
-+                print("    ovsdb_datum_sort_unique(&datum, %s, %s);" % (
-+                    type.key.toAtomicType(), valueType))
- 
--            print"""    ovsdb_idl_condition_add_clause(cond,
-+            print("""    ovsdb_idl_condition_add_clause(cond,
-                           function,
-                           &%(s)s_col_%(c)s,
-                           &datum);\
-@@ -974,28 +975,28 @@ void
-        'P': prefix.upper(),
-        's': structName,
-        'S': structName.upper(),
--       'c': columnName}
-+       'c': columnName})
-             for var in free:
--                print "    free(%s);" % var
--            print "}"
-+                print("    free(%s);" % var)
-+            print("}")
- 
--        print """
-+        print("""
- void
- %(s)s_set_condition(struct ovsdb_idl *idl, struct ovsdb_idl_condition *condition)
- {
-     ovsdb_idl_set_condition(idl, &%(p)stable_%(tl)s, condition);
- }""" % {'p': prefix,
-         's': structName,
--        'tl': tableName.lower()}
-+        'tl': tableName.lower()})
- 
-         # Table columns.
-         for columnName, column in sorted_columns(table):
-             prereqs = []
-             x = column.type.cInitType("%s_col_%s" % (tableName, columnName), prereqs)
-             if prereqs:
--                print '\n'.join(prereqs)
--        print "\nstruct ovsdb_idl_column %s_columns[%s_N_COLUMNS] = {" % (
--            structName, structName.upper())
-+                print('\n'.join(prereqs))
-+        print("\nstruct ovsdb_idl_column %s_columns[%s_N_COLUMNS] = {" % (
-+            structName, structName.upper()))
-         for columnName, column in sorted_columns(table):
-             if column.mutable:
-                 mutable = "true"
-@@ -1003,7 +1004,7 @@ void
-                 mutable = "false"
-             type_init = '\n'.join("            " + x
-                                   for x in column.type.cInitType("%s_col_%s" % (tableName, columnName), prereqs))
--            print """\
-+            print("""\
-     [%(P)s%(T)s_COL_%(C)s] = {
-          .name = "%(c)s",
-          .type = {
-@@ -1018,38 +1019,38 @@ void
-                'C': columnName.upper(),
-                's': structName,
-                'mutable': mutable,
--               'type': type_init}
--        print "};"
-+               'type': type_init})
-+        print("};")
- 
-     # Table classes.
--    print ""
--    print "struct ovsdb_idl_table_class %stable_classes[%sN_TABLES] = {" % (prefix, prefix.upper())
-+    print("")
-+    print("struct ovsdb_idl_table_class %stable_classes[%sN_TABLES] = {" % (prefix, prefix.upper()))
-     for tableName, table in sorted(schema.tables.iteritems()):
-         structName = "%s%s" % (prefix, tableName.lower())
-         if table.is_root:
-             is_root = "true"
-         else:
-             is_root = "false"
--        print "    {\"%s\", %s," % (tableName, is_root)
--        print "     %s_columns, ARRAY_SIZE(%s_columns)," % (
--            structName, structName)
--        print "     sizeof(struct %s), %s_init__}," % (structName, structName)
--    print "};"
-+        print("    {\"%s\", %s," % (tableName, is_root))
-+        print("     %s_columns, ARRAY_SIZE(%s_columns)," % (
-+            structName, structName))
-+        print("     sizeof(struct %s), %s_init__}," % (structName, structName))
-+    print("};")
- 
-     # IDL class.
--    print "\nstruct ovsdb_idl_class %sidl_class = {" % prefix
--    print "    \"%s\", %stable_classes, ARRAY_SIZE(%stable_classes)" % (
--        schema.name, prefix, prefix)
--    print "};"
-+    print("\nstruct ovsdb_idl_class %sidl_class = {" % prefix)
-+    print("    \"%s\", %stable_classes, ARRAY_SIZE(%stable_classes)" % (
-+        schema.name, prefix, prefix))
-+    print("};")
- 
--    print """
-+    print("""
- /* Return the schema version.  The caller must not free the returned value. */
- const char *
- %sget_db_version(void)
- {
-     return "%s";
- }
--""" % (prefix, schema.version)
-+""" % (prefix, schema.version))
- 
- 
- 
-@@ -1075,7 +1076,7 @@ def ovsdb_escape(string):
-     return re.sub(r'["\\\000-\037]', escape, string)
- 
- def usage():
--    print """\
-+    print("""\
- %(argv0)s: ovsdb schema compiler
- usage: %(argv0)s [OPTIONS] COMMAND ARG...
- 
-@@ -1087,7 +1088,7 @@ The following commands are supported:
- The following options are also available:
-   -h, --help                  display this help message
-   -V, --version               display version information\
--""" % {'argv0': argv0}
-+""" % {'argv0': argv0})
-     sys.exit(0)
- 
- if __name__ == "__main__":
-@@ -1105,7 +1106,7 @@ if __name__ == "__main__":
-             if key in ['-h', '--help']:
-                 usage()
-             elif key in ['-V', '--version']:
--                print "ovsdb-idlc (Open vSwitch) @VERSION@"
-+                print("ovsdb-idlc (Open vSwitch) @VERSION@")
-             elif key in ['-C', '--directory']:
-                 os.chdir(value)
-             else:
diff --git a/import-layers/meta-virtualization/recipes-networking/openvswitch/openvswitch-git/0001-use-the-linux-if_packet.h-Interface-directly.patch b/import-layers/meta-virtualization/recipes-networking/openvswitch/openvswitch-git/0001-use-the-linux-if_packet.h-Interface-directly.patch
deleted file mode 100644
index f1f9bef..0000000
--- a/import-layers/meta-virtualization/recipes-networking/openvswitch/openvswitch-git/0001-use-the-linux-if_packet.h-Interface-directly.patch
+++ /dev/null
@@ -1,33 +0,0 @@
-From 28b2d17de9414161d5edd67766bd4b452cd809ef Mon Sep 17 00:00:00 2001
-From: Khem Raj <raj.khem@gmail.com>
-Date: Mon, 20 Mar 2017 12:12:51 -0700
-Subject: [PATCH] use the linux if_packet.h Interface directly
-
-Helps compiling with musl
-
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
-
----
- lib/netdev-linux.c | 3 +--
- 1 file changed, 1 insertion(+), 2 deletions(-)
-
-diff --git a/lib/netdev-linux.c b/lib/netdev-linux.c
-index fccf88f..b703156 100644
---- a/lib/netdev-linux.c
-+++ b/lib/netdev-linux.c
-@@ -33,14 +33,13 @@
- #include <linux/pkt_sched.h>
- #include <linux/rtnetlink.h>
- #include <linux/sockios.h>
-+#include <linux/if_packet.h>
- #include <sys/types.h>
- #include <sys/ioctl.h>
- #include <sys/socket.h>
- #include <sys/utsname.h>
--#include <netpacket/packet.h>
- #include <net/if.h>
- #include <net/if_arp.h>
--#include <net/if_packet.h>
- #include <net/route.h>
- #include <netinet/in.h>
- #include <poll.h>
diff --git a/import-layers/meta-virtualization/recipes-networking/openvswitch/openvswitch-git/0002-Define-WAIT_ANY-if-not-provided-by-system.patch b/import-layers/meta-virtualization/recipes-networking/openvswitch/openvswitch-git/0002-Define-WAIT_ANY-if-not-provided-by-system.patch
deleted file mode 100644
index f997bbf..0000000
--- a/import-layers/meta-virtualization/recipes-networking/openvswitch/openvswitch-git/0002-Define-WAIT_ANY-if-not-provided-by-system.patch
+++ /dev/null
@@ -1,29 +0,0 @@
-From 801023e72b31e7c49cbccedd76ade33a17fcbe45 Mon Sep 17 00:00:00 2001
-From: Khem Raj <raj.khem@gmail.com>
-Date: Mon, 20 Mar 2017 12:13:30 -0700
-Subject: [PATCH] Define WAIT_ANY if not provided by system
-
-POSIX does not define it and uses -1 directly
-some libc do not have this definitions
-
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
-
----
- tests/test-ovn.c | 4 ++++
- 1 file changed, 4 insertions(+)
-
-diff --git a/tests/test-ovn.c b/tests/test-ovn.c
-index 84adf81..2bc6bdf 100644
---- a/tests/test-ovn.c
-+++ b/tests/test-ovn.c
-@@ -38,6 +38,10 @@
- #include "simap.h"
- #include "util.h"
- 
-+#ifndef WAIT_ANY
-+# define WAIT_ANY (-1) /* Any process.  */
-+#endif
-+
- /* --relops: Bitmap of the relational operators to test, in exhaustive test. */
- static unsigned int test_relops;
- 
diff --git a/import-layers/meta-virtualization/recipes-networking/openvswitch/openvswitch-git/0002-Python3-compatibility-exception-cleanup.patch b/import-layers/meta-virtualization/recipes-networking/openvswitch/openvswitch-git/0002-Python3-compatibility-exception-cleanup.patch
deleted file mode 100644
index 70abd26..0000000
--- a/import-layers/meta-virtualization/recipes-networking/openvswitch/openvswitch-git/0002-Python3-compatibility-exception-cleanup.patch
+++ /dev/null
@@ -1,77 +0,0 @@
-From c0ba116eab401431b4f11b66bd7d1b42741b03c3 Mon Sep 17 00:00:00 2001
-From: Jason Wessel <jason.wessel@windriver.com>
-Date: Thu, 29 Jun 2017 20:33:23 -0700
-Subject: [PATCH] Python3 compatibility: exception cleanup
-
-Commit 52e4a477f0b3c0a0ece7adeede6e06e07814f8b9 from
-https://github.com/openvswitch/ovs.git
-
-The exception syntax which is compatible with python2 and python3 is
-to use the "as" form for "except:".
-
-Signed-off-by: Jason Wessel <jason.wessel@windriver.com>
-Signed-off-by: Ben Pfaff <blp@ovn.org>
-
----
- build-aux/extract-ofp-fields | 2 +-
- ovsdb/ovsdb-doc              | 4 ++--
- ovsdb/ovsdb-idlc.in          | 4 ++--
- 3 files changed, 5 insertions(+), 5 deletions(-)
-
-diff --git a/build-aux/extract-ofp-fields b/build-aux/extract-ofp-fields
-index 80c7d35..6286c9c 100755
---- a/build-aux/extract-ofp-fields
-+++ b/build-aux/extract-ofp-fields
-@@ -784,7 +784,7 @@ if __name__ == "__main__":
-     try:
-         options, args = getopt.gnu_getopt(sys.argv[1:], 'h',
-                                           ['help', 'ovs-version='])
--    except getopt.GetoptError, geo:
-+    except getopt.GetoptError as geo:
-         sys.stderr.write("%s: %s\n" % (argv0, geo.msg))
-         sys.exit(1)
- 
-diff --git a/ovsdb/ovsdb-doc b/ovsdb/ovsdb-doc
-index e82ad59..9448713 100755
---- a/ovsdb/ovsdb-doc
-+++ b/ovsdb/ovsdb-doc
-@@ -278,7 +278,7 @@ if __name__ == "__main__":
-             options, args = getopt.gnu_getopt(sys.argv[1:], 'hV',
-                                               ['er-diagram=',
-                                                'version=', 'help'])
--        except getopt.GetoptError, geo:
-+        except getopt.GetoptError as geo:
-             sys.stderr.write("%s: %s\n" % (argv0, geo.msg))
-             sys.exit(1)
- 
-@@ -306,7 +306,7 @@ if __name__ == "__main__":
-             if len(line):
-                 print(line)
- 
--    except error.Error, e:
-+    except error.Error as e:
-         sys.stderr.write("%s: %s\n" % (argv0, e.msg))
-         sys.exit(1)
- 
-diff --git a/ovsdb/ovsdb-idlc.in b/ovsdb/ovsdb-idlc.in
-index 62442ee..e7e1c6b 100755
---- a/ovsdb/ovsdb-idlc.in
-+++ b/ovsdb/ovsdb-idlc.in
-@@ -1098,7 +1098,7 @@ if __name__ == "__main__":
-                                               ['directory',
-                                                'help',
-                                                'version'])
--        except getopt.GetoptError, geo:
-+        except getopt.GetoptError as geo:
-             sys.stderr.write("%s: %s\n" % (argv0, geo.msg))
-             sys.exit(1)
- 
-@@ -1136,7 +1136,7 @@ if __name__ == "__main__":
-             sys.exit(1)
- 
-         func(*args[1:])
--    except ovs.db.error.Error, e:
-+    except ovs.db.error.Error as e:
-         sys.stderr.write("%s: %s\n" % (argv0, e))
-         sys.exit(1)
- 
diff --git a/import-layers/meta-virtualization/recipes-networking/openvswitch/openvswitch-git/0003-Python3-compatibility-execfile-to-exec.patch b/import-layers/meta-virtualization/recipes-networking/openvswitch/openvswitch-git/0003-Python3-compatibility-execfile-to-exec.patch
deleted file mode 100644
index 98d77c8..0000000
--- a/import-layers/meta-virtualization/recipes-networking/openvswitch/openvswitch-git/0003-Python3-compatibility-execfile-to-exec.patch
+++ /dev/null
@@ -1,31 +0,0 @@
-From 8557d51e8c7325a17219911e9a65eeb3946e869f Mon Sep 17 00:00:00 2001
-From: Jason Wessel <jason.wessel@windriver.com>
-Date: Thu, 29 Jun 2017 20:33:23 -0700
-Subject: [PATCH] Python3 compatibility: execfile to exec
-
-Commit a4d10a7ca937d73873f6f98619d88682e69f5dbe from
-https://github.com/openvswitch/ovs.git
-
-Allow compability with python3 and python2 by changing execfile() to
-exec().
-
-Signed-off-by: Jason Wessel <jason.wessel@windriver.com>
-Signed-off-by: Ben Pfaff <blp@ovn.org>
-
----
- ovsdb/ovsdb-idlc.in | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/ovsdb/ovsdb-idlc.in b/ovsdb/ovsdb-idlc.in
-index e7e1c6b..e1551f9 100755
---- a/ovsdb/ovsdb-idlc.in
-+++ b/ovsdb/ovsdb-idlc.in
-@@ -17,7 +17,7 @@ def parseSchema(filename):
- 
- def annotateSchema(schemaFile, annotationFile):
-     schemaJson = ovs.json.from_file(schemaFile)
--    execfile(annotationFile, globals(), {"s": schemaJson})
-+    exec(compile(open(annotationFile, "rb").read(), annotationFile, 'exec'), globals(), {"s": schemaJson})
-     ovs.json.to_stream(schemaJson, sys.stdout)
-     sys.stdout.write('\n')
- 
diff --git a/import-layers/meta-virtualization/recipes-networking/openvswitch/openvswitch-git/0004-Python3-compatibility-iteritems-to-items.patch b/import-layers/meta-virtualization/recipes-networking/openvswitch/openvswitch-git/0004-Python3-compatibility-iteritems-to-items.patch
deleted file mode 100644
index 092c42d..0000000
--- a/import-layers/meta-virtualization/recipes-networking/openvswitch/openvswitch-git/0004-Python3-compatibility-iteritems-to-items.patch
+++ /dev/null
@@ -1,100 +0,0 @@
-From 7e4bd5c2af85b1293be0a92b18f7930bda2ab41a Mon Sep 17 00:00:00 2001
-From: Jason Wessel <jason.wessel@windriver.com>
-Date: Thu, 29 Jun 2017 20:33:23 -0700
-Subject: [PATCH] Python3 compatibility: iteritems to items
-
-Commit 4ab665623cbb4c6506e48b82e0c9fe8585f42e13 from
-https://github.com/openvswitch/ovs.git
-
-Allow compability with python3 and python2 by changing iteritems() to
-items().
-
-Signed-off-by: Jason Wessel <jason.wessel@windriver.com>
-Signed-off-by: Ben Pfaff <blp@ovn.org>
-
----
- build-aux/extract-ofp-actions | 2 +-
- build-aux/extract-ofp-errors  | 2 +-
- build-aux/extract-ofp-fields  | 2 +-
- ovsdb/ovsdb-idlc.in           | 8 ++++----
- 4 files changed, 7 insertions(+), 7 deletions(-)
-
-diff --git a/build-aux/extract-ofp-actions b/build-aux/extract-ofp-actions
-index 67e3848..c7858bd 100755
---- a/build-aux/extract-ofp-actions
-+++ b/build-aux/extract-ofp-actions
-@@ -13,7 +13,7 @@ version_map = {"1.0": 0x01,
-                "1.3": 0x04,
-                "1.4": 0x05,
-                "1.5": 0x06}
--version_reverse_map = dict((v, k) for (k, v) in version_map.iteritems())
-+version_reverse_map = dict((v, k) for (k, v) in version_map.items())
- 
- # Map from vendor name to the length of the action header.
- vendor_map = {"OF": (0x00000000,  4),
-diff --git a/build-aux/extract-ofp-errors b/build-aux/extract-ofp-errors
-index 97d62d2..58ba006 100755
---- a/build-aux/extract-ofp-errors
-+++ b/build-aux/extract-ofp-errors
-@@ -14,7 +14,7 @@ version_map = {"1.0": 0x01,
-                "1.4": 0x05,
-                "1.5": 0x06,
-                "1.6": 0x07}
--version_reverse_map = dict((v, k) for (k, v) in version_map.iteritems())
-+version_reverse_map = dict((v, k) for (k, v) in version_map.items())
- 
- token = None
- line = ""
-diff --git a/build-aux/extract-ofp-fields b/build-aux/extract-ofp-fields
-index 6286c9c..f624728 100755
---- a/build-aux/extract-ofp-fields
-+++ b/build-aux/extract-ofp-fields
-@@ -16,7 +16,7 @@ VERSION = {"1.0": 0x01,
-            "1.3": 0x04,
-            "1.4": 0x05,
-            "1.5": 0x06}
--VERSION_REVERSE = dict((v,k) for k, v in VERSION.iteritems())
-+VERSION_REVERSE = dict((v,k) for k, v in VERSION.items())
- 
- TYPES = {"u8":       (1,   False),
-          "be16":     (2,   False),
-diff --git a/ovsdb/ovsdb-idlc.in b/ovsdb/ovsdb-idlc.in
-index e1551f9..b70a599 100755
---- a/ovsdb/ovsdb-idlc.in
-+++ b/ovsdb/ovsdb-idlc.in
-@@ -138,7 +138,7 @@ def printCIDLHeader(schemaFile):
- #include "smap.h"
- #include "uuid.h"''' % {'prefix': prefix.upper()})
- 
--    for tableName, table in sorted(schema.tables.iteritems()):
-+    for tableName, table in sorted(schema.tables.items()):
-         structName = "%s%s" % (prefix, tableName.lower())
- 
-         print("")
-@@ -300,7 +300,7 @@ def printCIDLSource(schemaFile):
- ''' % schema.idlHeader)
- 
-     # Cast functions.
--    for tableName, table in sorted(schema.tables.iteritems()):
-+    for tableName, table in sorted(schema.tables.items()):
-         structName = "%s%s" % (prefix, tableName.lower())
-         print('''
- static struct %(s)s *
-@@ -311,7 +311,7 @@ static struct %(s)s *
- ''' % {'s': structName})
- 
- 
--    for tableName, table in sorted(schema.tables.iteritems()):
-+    for tableName, table in sorted(schema.tables.items()):
-         structName = "%s%s" % (prefix, tableName.lower())
-         print("")
-         print("/* %s table. */" % (tableName))
-@@ -1025,7 +1025,7 @@ void
-     # Table classes.
-     print("")
-     print("struct ovsdb_idl_table_class %stable_classes[%sN_TABLES] = {" % (prefix, prefix.upper()))
--    for tableName, table in sorted(schema.tables.iteritems()):
-+    for tableName, table in sorted(schema.tables.items()):
-         structName = "%s%s" % (prefix, tableName.lower())
-         if table.is_root:
-             is_root = "true"
diff --git a/import-layers/meta-virtualization/recipes-networking/openvswitch/openvswitch-git/0005-Python3-compatibility-fix-integer-problems.patch b/import-layers/meta-virtualization/recipes-networking/openvswitch/openvswitch-git/0005-Python3-compatibility-fix-integer-problems.patch
deleted file mode 100644
index d6f9364..0000000
--- a/import-layers/meta-virtualization/recipes-networking/openvswitch/openvswitch-git/0005-Python3-compatibility-fix-integer-problems.patch
+++ /dev/null
@@ -1,49 +0,0 @@
-From d22c7f1c6ade82a0cd646cfcd8df9adda6cd1ad6 Mon Sep 17 00:00:00 2001
-From: Jason Wessel <jason.wessel@windriver.com>
-Date: Thu, 29 Jun 2017 20:33:23 -0700
-Subject: [PATCH] Python3 compatibility: fix integer problems
-
-Commit fa145f1a53943243f94a32ce98525db8494b0052 from
-https://github.com/openvswitch/ovs.git
-
-In python3 maxint is not defined, but maxsize is defined in both
-python2 and python3.
-
-The put_text() will not automatically use a value which came in as
-float due to a pior math function and python3 will throw an exception.
-The simple answer is to convert it with int() and move on.
-
-Signed-off-by: Jason Wessel <jason.wessel@windriver.com>
-Signed-off-by: Ben Pfaff <blp@ovn.org>
-
----
- ovsdb/ovsdb-idlc.in   | 2 +-
- python/build/nroff.py | 2 ++
- 2 files changed, 3 insertions(+), 1 deletion(-)
-
-diff --git a/ovsdb/ovsdb-idlc.in b/ovsdb/ovsdb-idlc.in
-index b70a599..3645275 100755
---- a/ovsdb/ovsdb-idlc.in
-+++ b/ovsdb/ovsdb-idlc.in
-@@ -358,7 +358,7 @@ static void
-                     print("        %s" % type.value.initCDefault(valueVar, type.n_min == 0))
-                 print("    }")
-             else:
--                if type.n_max != sys.maxint:
-+                if type.n_max != sys.maxsize:
-                     print("    size_t n = MIN(%d, datum->n);" % type.n_max)
-                     nMax = "n"
-                 else:
-diff --git a/python/build/nroff.py b/python/build/nroff.py
-index c23837f..401f699 100644
---- a/python/build/nroff.py
-+++ b/python/build/nroff.py
-@@ -148,6 +148,8 @@ def fatal(msg):
- 
- 
- def put_text(text, x, y, s):
-+    x = int(x)
-+    y = int(y)
-     extend = x + len(s) - len(text[y])
-     if extend > 0:
-         text[y] += ' ' * extend
diff --git a/import-layers/meta-virtualization/recipes-networking/openvswitch/openvswitch-git/0006-Python3-compatibility-math-error-compatibility.patch b/import-layers/meta-virtualization/recipes-networking/openvswitch/openvswitch-git/0006-Python3-compatibility-math-error-compatibility.patch
deleted file mode 100644
index c53502b..0000000
--- a/import-layers/meta-virtualization/recipes-networking/openvswitch/openvswitch-git/0006-Python3-compatibility-math-error-compatibility.patch
+++ /dev/null
@@ -1,54 +0,0 @@
-From 7f542122d62b20d11198bfdb0f2c6a460261b5e7 Mon Sep 17 00:00:00 2001
-From: Jason Wessel <jason.wessel@windriver.com>
-Date: Thu, 29 Jun 2017 20:33:23 -0700
-Subject: [PATCH] Python3 compatibility: math error compatibility
-
-Commit 3fa5aa4294377e0f35267936d0c5caea3e61db48 from
-https://github.com/openvswitch/ovs.git
-
-The way math is handled with typing is completely different in python3.
-
-% python2<<EOF
-x=10
-y=8
-print((x + (y - 1)) / y * y)
-EOF
-16
-
-python3<<EOF
-x=10
-y=8
-print((x + (y - 1)) / y * y)
-EOF
-17.0
-
-So we need to force an integer for the round function as follows and
-maintain compatibility with python2.
-
-python3<<EOF
-x=10
-y=8
-print(int((x + (y - 1)) / y) * y)
-EOF
-16
-
-Signed-off-by: Jason Wessel <jason.wessel@windriver.com>
-Signed-off-by: Ben Pfaff <blp@ovn.org>
-
----
- build-aux/extract-ofp-actions | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/build-aux/extract-ofp-actions b/build-aux/extract-ofp-actions
-index c7858bd..4d05ef9 100755
---- a/build-aux/extract-ofp-actions
-+++ b/build-aux/extract-ofp-actions
-@@ -35,7 +35,7 @@ line = ""
- arg_structs = set()
- 
- def round_up(x, y):
--    return (x + (y - 1)) / y * y
-+    return int((x + (y - 1)) / y) * y
- 
- def open_file(fn):
-     global file_name
diff --git a/import-layers/meta-virtualization/recipes-networking/openvswitch/openvswitch-git/0007-Python3-compatibility-unicode-to-str.patch b/import-layers/meta-virtualization/recipes-networking/openvswitch/openvswitch-git/0007-Python3-compatibility-unicode-to-str.patch
deleted file mode 100644
index 753490f..0000000
--- a/import-layers/meta-virtualization/recipes-networking/openvswitch/openvswitch-git/0007-Python3-compatibility-unicode-to-str.patch
+++ /dev/null
@@ -1,49 +0,0 @@
-From c78b39ae9ba6337210d6a9e4ccc4753cb1c3b48f Mon Sep 17 00:00:00 2001
-From: Jason Wessel <jason.wessel@windriver.com>
-Date: Thu, 29 Jun 2017 20:33:23 -0700
-Subject: [PATCH] Python3 compatibility: unicode to str
-
-Commit 7430959d4ad17db89b8387c3aef58c8b230cad10 from
-https://github.com/openvswitch/ovs.git
-
-When transitioning from python2 to python3 the following type class
-changes occured:
-
-python2 -> python3
-unicode -> str
-str -> bytes
-
-That means we have to check the python version and do the right type
-check python3 will throw an error when it tries to use the unicode
-type because it doesn't exist.
-
-Signed-off-by: Jason Wessel <jason.wessel@windriver.com>
-Signed-off-by: Ben Pfaff <blp@ovn.org>
-
----
- ovsdb/ovsdb-doc | 12 +++++++++---
- 1 file changed, 9 insertions(+), 3 deletions(-)
-
-diff --git a/ovsdb/ovsdb-doc b/ovsdb/ovsdb-doc
-index 9448713..d55c6e6 100755
---- a/ovsdb/ovsdb-doc
-+++ b/ovsdb/ovsdb-doc
-@@ -65,9 +65,15 @@ def columnGroupToNroff(table, groupXml, documented_columns):
-                 if node.hasAttribute('type'):
-                     type_string = node.attributes['type'].nodeValue
-                     type_json = ovs.json.from_string(str(type_string))
--                    if type(type_json) in (str, unicode):
--                        raise error.Error("%s %s:%s has invalid 'type': %s" 
--                                          % (table.name, name, key, type_json))
-+                    # py2 -> py3 means str -> bytes and unicode -> str
-+                    try:
-+                        if type(type_json) in (str, unicode):
-+                            raise error.Error("%s %s:%s has invalid 'type': %s" 
-+                                              % (table.name, name, key, type_json))
-+                    except:
-+                        if type(type_json) in (bytes, str):
-+                            raise error.Error("%s %s:%s has invalid 'type': %s" 
-+                                              % (table.name, name, key, type_json))
-                     type_ = ovs.db.types.BaseType.from_json(type_json)
-                 else:
-                     type_ = column.type.value
diff --git a/import-layers/meta-virtualization/recipes-networking/openvswitch/openvswitch-git/0008-AUTHORS-Add-Jason-Wessel.patch b/import-layers/meta-virtualization/recipes-networking/openvswitch/openvswitch-git/0008-AUTHORS-Add-Jason-Wessel.patch
deleted file mode 100644
index f55a5ca..0000000
--- a/import-layers/meta-virtualization/recipes-networking/openvswitch/openvswitch-git/0008-AUTHORS-Add-Jason-Wessel.patch
+++ /dev/null
@@ -1,26 +0,0 @@
-From f8491645416952b31000f42777ff79486a7b0511 Mon Sep 17 00:00:00 2001
-From: Ben Pfaff <blp@ovn.org>
-Date: Thu, 6 Jul 2017 14:01:27 -0700
-Subject: [PATCH] AUTHORS: Add Jason Wessel.
-
-Commit a91c4cfaf863718bc94fb9c88939bd0b0385a6fe from
-https://github.com/openvswitch/ovs.git
-
-Signed-off-by: Ben Pfaff <blp@ovn.org>
-
----
- AUTHORS.rst | 1 +
- 1 file changed, 1 insertion(+)
-
-diff --git a/AUTHORS.rst b/AUTHORS.rst
-index 63e6a8d..d0dc70d 100644
---- a/AUTHORS.rst
-+++ b/AUTHORS.rst
-@@ -156,6 +156,7 @@ Jan Scheurich                   jan.scheurich@ericsson.com
- Jan Vansteenkiste               jan@vstone.eu
- Jarno Rajahalme                 jarno@ovn.org
- Jason Kölker                    jason@koelker.net
-+Jason Wessel                    jason.wessel@windriver.com
- Jasper Capel                    jasper@capel.tv
- Jean Tourrilhes                 jt@hpl.hp.com
- Jeremy Stribling                strib@nicira.com
diff --git a/import-layers/meta-virtualization/recipes-networking/openvswitch/openvswitch-git/disable_m4_check.patch b/import-layers/meta-virtualization/recipes-networking/openvswitch/openvswitch-git/disable_m4_check.patch
deleted file mode 100644
index 5c86aac..0000000
--- a/import-layers/meta-virtualization/recipes-networking/openvswitch/openvswitch-git/disable_m4_check.patch
+++ /dev/null
@@ -1,24 +0,0 @@
-From f675d7209f999ce80cb4249c4ebb216697387b71 Mon Sep 17 00:00:00 2001
-From: Amy Fong <amy.fong@windriver.com>
-Date: Thu, 29 Jan 2015 09:56:03 -0500
-Subject: [PATCH] Disable m4 file test where sources are built from git.
-
-Signed-off-by: Amy Fong <amy.fong@windriver.com>
-
----
- Makefile.am | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/Makefile.am b/Makefile.am
-index ff7d70a..2fc1f13 100644
---- a/Makefile.am
-+++ b/Makefile.am
-@@ -189,7 +189,7 @@ CLEAN_LOCAL += clean-pycov
- # Makefile in datapath/linux, needed to get the list of files to
- # distribute, requires GNU make extensions.
- if GNU_MAKE
--ALL_LOCAL += dist-hook-git
-+# ALL_LOCAL += dist-hook-git
- dist-hook-git: distfiles
- 	@if test -e $(srcdir)/.git && (git --version) >/dev/null 2>&1; then \
- 	  (cd datapath && $(MAKE) distfiles); \
diff --git a/import-layers/meta-virtualization/recipes-networking/openvswitch/openvswitch-git/kernel_module.patch b/import-layers/meta-virtualization/recipes-networking/openvswitch/openvswitch-git/kernel_module.patch
deleted file mode 100644
index c177202..0000000
--- a/import-layers/meta-virtualization/recipes-networking/openvswitch/openvswitch-git/kernel_module.patch
+++ /dev/null
@@ -1,26 +0,0 @@
-From adfd2380d71dff1a31efaf63cf7ac97470466ec9 Mon Sep 17 00:00:00 2001
-From: Amy Fong <amy.fong@windriver.com>
-Date: Thu, 29 Jan 2015 09:56:03 -0500
-Subject: [PATCH] Specify install path for kernel module
-
-Signed-off-by: Amy Fong <amy.fong@windriver.com>
-
----
- datapath/linux/Makefile.main.in | 4 ++--
- 1 file changed, 2 insertions(+), 2 deletions(-)
-
-diff --git a/datapath/linux/Makefile.main.in b/datapath/linux/Makefile.main.in
-index 7d18253..63c520f 100644
---- a/datapath/linux/Makefile.main.in
-+++ b/datapath/linux/Makefile.main.in
-@@ -71,8 +71,8 @@ default:
- 	$(MAKE) -C $(KSRC) M=$(builddir) modules
- 
- modules_install:
--	$(MAKE) -C $(KSRC) M=$(builddir) modules_install
--	depmod `sed -n 's/#define UTS_RELEASE "\([^"]*\)"/\1/p' $(KSRC)/include/generated/utsrelease.h`
-+	$(MAKE) -C $(KSRC) M=$(builddir) modules_install INSTALL_MOD_PATH=${INSTALL_MOD_PATH}
-+	# depmod `sed -n 's/#define UTS_RELEASE "\([^"]*\)"/\1/p' $(KSRC)/include/generated/utsrelease.h`
- endif
- 
- # Much of the kernel build system in this file is derived from Intel's
diff --git a/import-layers/meta-virtualization/recipes-networking/openvswitch/openvswitch-git/openvswitch-add-ptest-b8dcfbebee9e7dbc74ec5eecc9b45d335d6150c1.patch b/import-layers/meta-virtualization/recipes-networking/openvswitch/openvswitch-git/openvswitch-add-ptest-b8dcfbebee9e7dbc74ec5eecc9b45d335d6150c1.patch
deleted file mode 100644
index 4ae86c3..0000000
--- a/import-layers/meta-virtualization/recipes-networking/openvswitch/openvswitch-git/openvswitch-add-ptest-b8dcfbebee9e7dbc74ec5eecc9b45d335d6150c1.patch
+++ /dev/null
@@ -1,108 +0,0 @@
-From fb68120ef8aed625b04b2fbd2cb78fc59a7b7432 Mon Sep 17 00:00:00 2001
-From: He Zhe <zhe.he@windriver.com>
-Date: Wed, 30 Mar 2016 06:23:45 -0400
-Subject: [PATCH] openvswitch: Add test-install rule to support ptest execution
-
-Signed-off-by: Radu Patriu <radu.patriu@enea.com>
-
-Fix ptest for v2.5
- - Copy certain files from srcdir since it has been different from
-   build directory.
- - Copy more necessary files for new added test cases.
- - Modify config files for running on target.
-
-Signed-off-by: He Zhe <zhe.he@windriver.com>
-
----
- Makefile.am |  1 +
- test.mk     | 72 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
- 2 files changed, 73 insertions(+)
- create mode 100644 test.mk
-
-diff --git a/Makefile.am b/Makefile.am
-index ea63acb..ff7d70a 100644
---- a/Makefile.am
-+++ b/Makefile.am
-@@ -429,3 +429,4 @@ include windows/automake.mk
- include ovn/automake.mk
- include selinux/automake.mk
- include build-aux/automake.mk
-+include test.mk
-diff --git a/test.mk b/test.mk
-new file mode 100644
-index 0000000..b10a581
---- /dev/null
-+++ b/test.mk
-@@ -0,0 +1,72 @@
-+TEST_DEST ?= ${prefix}/lib/openvswitch
-+TEST_ROOT ?= ${prefix}/lib/openvswitch
-+TEST_DEPEND =
-+
-+if HAVE_OPENSSL
-+TEST_DEPEND += $(TESTPKI_FILES)
-+endif
-+
-+test-install: $(TEST_DEPEND)
-+	@list='$(noinst_PROGRAMS) $(EXTRA_DIST) $(dist_check_SCRIPTS) $(TEST_DEPEND) tests/atlocal tests/atconfig' ;\
-+	install -d $(TEST_DEST)/tests ;\
-+	install $(srcdir)/vtep/ovs-vtep $(TEST_DEST)/tests ;\
-+	install -d $(TEST_DEST)/python ;\
-+	install -d $(TEST_DEST)/python/ovs ;\
-+	install -d $(TEST_DEST)/python/ovs/db ;\
-+	install -d $(TEST_DEST)/python/ovs/unixctl ;\
-+	install -d $(TEST_DEST)/vswitchd ;\
-+	install $(srcdir)/vswitchd/vswitch.ovsschema $(TEST_DEST)/vswitchd ;\
-+	install vswitchd/ovs-vswitchd $(TEST_DEST)/vswitchd ;\
-+	install -d $(TEST_DEST)/debian ;\
-+	install $(srcdir)/debian/ovs-monitor-ipsec $(TEST_DEST)/debian ;\
-+	install -d $(TEST_DEST)/build-aux ;\
-+	install $(srcdir)/build-aux/check-structs $(TEST_DEST)/build-aux ;\
-+	install -d $(TEST_DEST)/xenserver ;\
-+	install $(srcdir)/xenserver/usr_share_openvswitch_scripts_ovs-xapi-sync $(TEST_DEST)/xenserver ;\
-+	install $(srcdir)/xenserver/opt_xensource_libexec_interface-reconfigure $(TEST_DEST)/xenserver ;\
-+	install $(srcdir)/xenserver/opt_xensource_libexec_InterfaceReconfigure.py $(TEST_DEST)/xenserver ;\
-+	install $(srcdir)/xenserver/opt_xensource_libexec_InterfaceReconfigureBridge.py $(TEST_DEST)/xenserver ;\
-+	install $(srcdir)/xenserver/opt_xensource_libexec_InterfaceReconfigureVswitch.py $(TEST_DEST)/xenserver ;\
-+	install -d $(TEST_DEST)/vtep ;\
-+	install $(srcdir)/vtep/vtep.ovsschema $(TEST_DEST)/vtep ;\
-+	install -d $(TEST_DEST)/ovn ;\
-+	install $(srcdir)/ovn/ovn-nb.ovsschema $(TEST_DEST)/ovn ;\
-+	install $(srcdir)/ovn/ovn-sb.ovsschema $(TEST_DEST)/ovn ;\
-+	install -d $(TEST_DEST)/utilities ;\
-+	install $(srcdir)/utilities/ovs-pcap.in $(TEST_DEST)/utilities ;\
-+	install $(srcdir)/utilities/ovs-pki.in $(TEST_DEST)/utilities ;\
-+	for p in $$list ; do \
-+	  echo $$p ;\
-+	  p=$${p#../git/} ;\
-+	  pre=$${p#tests\/} ;\
-+	  if test $$pre != $$p ; then \
-+	    echo installing $$p to $(TEST_DEST)/tests/$$pre ;\
-+	    if test -f $$p ; then \
-+	      install $$p $(TEST_DEST)/tests/$$pre ;\
-+	    else \
-+	      install $(srcdir)/$$p $(TEST_DEST)/tests/$$pre ;\
-+	    fi ;\
-+	    continue ;\
-+	  fi ;\
-+	  pre=$${p#python\/ovs\/} ;\
-+	  if test $$pre != $$p ; then \
-+	    echo installing $$p to $(TEST_DEST)/python/ovs/$$pre ;\
-+	    if test -f $$p ; then \
-+	      install $$p $(TEST_DEST)/python/ovs/$$pre ;\
-+	    else \
-+	      install $(srcdir)/$$p $(TEST_DEST)/python/ovs/$$pre ;\
-+	    fi ;\
-+	    continue ;\
-+	  fi; \
-+	done ;\
-+	sed -i 's|abs_builddir=.*|abs_builddir='"'"'$(TEST_ROOT)/tests'"'"'|g' $(TEST_DEST)/tests/atconfig
-+	sed -i 's|abs_srcdir=.*|abs_srcdir='"'"'$(TEST_ROOT)/tests'"'"'|g' $(TEST_DEST)/tests/atconfig
-+	sed -i 's|abs_top_srcdir=.*|abs_top_srcdir='"'"'$(TEST_ROOT)'"'"'|g' $(TEST_DEST)/tests/atconfig
-+	sed -i 's|abs_top_builddir=.*|abs_top_builddir='"'"'$(TEST_ROOT)'"'"'|g' $(TEST_DEST)/tests/atconfig
-+	sed -i 's|at_srcdir=.*|at_srcdir='"'"'.'"'"'|g' $(TEST_DEST)/tests/atconfig
-+	sed -i 's|at_top_srcdir=.*|at_top_srcdir='"'"'..'"'"'|g' $(TEST_DEST)/tests/atconfig
-+	sed -i 's|at_top_build_prefix=.*|at_top_build_prefix='"'"'../'"'"'|g' $(TEST_DEST)/tests/atconfig
-+	sed -i 's|^\(.*config\.log.*\)|#\1|g' $(TEST_DEST)/tests/testsuite
-+	sed -i 's|$$srcdir|$$abs_srcdir|g' $(TEST_DEST)/tests/testsuite
-+	sed -i 's|ovs-appctl-bashcomp\.bash|/etc/bash_completion.d/ovs-appctl-bashcomp\.bash|g' $(TEST_DEST)/tests/testsuite
-+	sed -i 's|ovs-vsctl-bashcomp\.bash|/etc/bash_completion.d/ovs-vsctl-bashcomp\.bash|g' $(TEST_DEST)/tests/testsuite
diff --git a/import-layers/meta-virtualization/recipes-networking/openvswitch/openvswitch.inc b/import-layers/meta-virtualization/recipes-networking/openvswitch/openvswitch.inc
deleted file mode 100644
index 58e0fcb..0000000
--- a/import-layers/meta-virtualization/recipes-networking/openvswitch/openvswitch.inc
+++ /dev/null
@@ -1,153 +0,0 @@
-SUMMARY = "OpenvSwitch"
-DESCRIPTION = "\
-	Open vSwitch is a production quality, multilayer virtual switch \
-	licensed under the open source Apache 2.0 license. It is designed \
-	to enable massive network automation through programmatic extension, \
-	while still supporting standard management interfaces and protocols \
-	(e.g. NetFlow, sFlow, SPAN, RSPAN, CLI, LACP, 802.1ag) \
-	"
-
-HOMEPAGE = "http://openvswitch.org/"
-SECTION = "networking"
-LICENSE = "Apache-2"
-
-DEPENDS += "bridge-utils openssl python3 perl python3-six-native coreutils-native"
-
-RDEPENDS_${PN} += "util-linux-uuidgen util-linux-libuuid coreutils \
-        python3 perl perl-module-strict ${PN}-switch \
-        bash python3-twisted python3-six"
-RDEPENDS_${PN}-testcontroller = "${PN} lsb ${PN}-pki"
-RDEPENDS_${PN}-switch = "${PN} openssl procps util-linux-uuidgen"
-RDEPENDS_${PN}-pki = "${PN}"
-RDEPENDS_${PN}-brcompat = "${PN} ${PN}-switch"
-
-# Some installers will fail because of an install order based on
-# rdeps.  E.g. ovs-pki calls sed in the postinstall.  sed may be
-# queued for install later.
-RDEPENDS_${PN} += "sed gawk grep"
-
-SRC_URI = "\
-	file://openvswitch-switch \
-	file://openvswitch-switch-setup \
-	file://openvswitch-testcontroller \
-	file://openvswitch-testcontroller-setup \
-	"
-
-EXTRA_OECONF += "\
-	PYTHON=python3 \
-	PYTHON3=python3 \
-	PERL=${bindir}/perl \
-	"
-CONFIGUREOPT_DEPTRACK = ""
-
-# Don't compile kernel modules by default since it heavily depends on
-# kernel version. Use the in-kernel module for now.
-# distro layers can enable with EXTRA_OECONF_pn_openvswitch += ""
-# EXTRA_OECONF = "--with-linux=${STAGING_KERNEL_DIR} KARCH=${TARGET_ARCH}"
-
-ALLOW_EMPTY_${PN}-pki = "1"
-PACKAGES =+ "${PN}-testcontroller ${PN}-switch ${PN}-brcompat ${PN}-pki"
-
-FILES_${PN}-testcontroller = "\
-	${sysconfdir}/init.d/openvswitch-testcontroller \
-	${sysconfdir}/default/openvswitch-testcontroller \
-	${sysconfdir}/openvswitch-testcontroller \
-	${bindir}/ovs-testcontroller \
-	"
-
-FILES_${PN}-brcompat = "${sbindir}/ovs-brcompatd"
-
-FILES_${PN}-switch = "\
-	${sysconfdir}/init.d/openvswitch-switch \
-	${sysconfdir}/default/openvswitch-switch \
-	${systemd_unitdir}/system/ovs-vswitchd.service \
-	${systemd_unitdir}/system/openvswitch.service \
-	${systemd_unitdir}/system/ovsdb-server.service \
-	"
-
-# silence a warning
-FILES_${PN} += "${datadir}/ovsdbmonitor"
-FILES_${PN} += "/run"
-
-FILES_${PN} += "${libdir}/python${PYTHON_BASEVERSION}/"
-inherit autotools update-rc.d systemd python3native
-
-SYSTEMD_PACKAGES = "${PN}-switch"
-SYSTEMD_SERVICE_${PN}-switch = " \
-    ovsdb-server.service \
-    ovs-vswitchd.service \
-    openvswitch.service \
-"
-
-INITSCRIPT_PACKAGES = "${PN}-switch ${PN}-testcontroller"
-INITSCRIPT_NAME_${PN}-switch = "openvswitch-switch"
-INITSCRIPT_PARAMS_${PN}-switch = "defaults 71"
-
-INITSCRIPT_NAME_${PN}-testcontroller = "openvswitch-testcontroller"
-INITSCRIPT_PARAMS_${PN}-testcontroller = "defaults 72"
-
-do_configure_prepend() {
-	# Work around the for Makefile CC=$(if ....) by swapping out any
-	# "-Wa," assembly directives with "-Xassembler
-	CC=`echo '${CC}' | sed 's/-Wa,/-Xassembler /g'`
-}
-
-do_install_append() {
-	install -d ${D}/${sysconfdir}/default/
-	install -m 660 ${WORKDIR}/openvswitch-switch-setup ${D}/${sysconfdir}/default/openvswitch-switch
-	install -d ${D}/${sysconfdir}/openvswitch-testcontroller
-	install -m 660 ${WORKDIR}/openvswitch-testcontroller-setup ${D}/${sysconfdir}/default/openvswitch-testcontroller
-
-	install -d ${D}/${sysconfdir}/init.d/
-	install -m 755 ${WORKDIR}/openvswitch-testcontroller ${D}/${sysconfdir}/init.d/openvswitch-testcontroller
-	install -m 755 ${WORKDIR}/openvswitch-switch ${D}/${sysconfdir}/init.d/openvswitch-switch
-	true || rm -fr ${D}/${datadir}/${PN}/pki
-
-	install -d ${D}/${systemd_unitdir}/system/
-	install -m 644 ${S}/rhel/usr_lib_systemd_system_ovs-vswitchd.service \
-		${D}/${systemd_unitdir}/system/ovs-vswitchd.service
-	install -m 644 ${S}/rhel/usr_lib_systemd_system_openvswitch.service \
-		${D}/${systemd_unitdir}/system/openvswitch.service
-	install -m 644 ${S}/rhel/usr_lib_systemd_system_ovsdb-server.service \
-		${D}/${systemd_unitdir}/system/ovsdb-server.service
-
-	oe_runmake modules_install INSTALL_MOD_PATH=${D}
-	install -d ${D}${libdir}/python${PYTHON_BASEVERSION}/site-packages
-	cp -r ${S}/python/ovstest/ ${D}${libdir}/python${PYTHON_BASEVERSION}/site-packages/
-}
-
-pkg_postinst_${PN}-pki () {
-	# can't do this offline
-	if [ "x$D" != "x" ]; then
-		exit 1
-	fi
-	if test ! -d $D/${datadir}/${PN}/pki; then
-		ovs-pki init --dir=$D/${datadir}/${PN}/pki
-	fi
-}
-
-pkg_postinst_${PN}-testcontroller () {
-	# can't do this offline
-	if [ "x$D" != "x" ]; then
-		exit 1
-	fi
-
-	if test ! -d $D/${datadir}/${PN}/pki; then
-		ovs-pki init --dir=$D/${datadir}/${PN}/pki
-	fi
-
-	cd $D/${sysconfdir}/openvswitch-testcontroller
-	if ! test -e cacert.pem; then
-		ln -s $D/${datadir}/${PN}/pki/switchca/cacert.pem cacert.pem
-	fi
-	if ! test -e privkey.pem || ! test -e cert.pem; then
-		oldumask=$(umask)
-		umask 077
-		ovs-pki req+sign --dir=$D/${datadir}/${PN}/pki tmp controller >/dev/null
-		mv tmp-privkey.pem privkey.pem
-		mv tmp-cert.pem cert.pem
-		mv tmp-req.pem req.pem
-		chmod go+r cert.pem req.pem
-		umask $oldumask
-	fi
-}
diff --git a/import-layers/meta-virtualization/recipes-networking/openvswitch/openvswitch_git.bb b/import-layers/meta-virtualization/recipes-networking/openvswitch/openvswitch_git.bb
deleted file mode 100644
index c3a8301..0000000
--- a/import-layers/meta-virtualization/recipes-networking/openvswitch/openvswitch_git.bb
+++ /dev/null
@@ -1,75 +0,0 @@
-require openvswitch.inc
-
-DEPENDS += "virtual/kernel"
-
-RDEPENDS_${PN}-ptest += "\
-	python3-logging python3-syslog python3-io \
-	python3-fcntl python3-shell python3-xml python3-math \
-	python3-datetime python3-netclient python3 sed \
-	ldd perl-module-socket perl-module-carp perl-module-exporter \
-	perl-module-xsloader python3-netserver python3-threading \
-	python3-resource findutils which \
-	"
-
-S = "${WORKDIR}/git"
-PV = "2.7.3+${SRCREV}"
-
-FILESEXTRAPATHS_append := "${THISDIR}/${PN}-git:"
-
-SRCREV = "b8dcfbebee9e7dbc74ec5eecc9b45d335d6150c1"
-SRC_URI = "file://openvswitch-switch \
-           file://openvswitch-switch-setup \
-           file://openvswitch-testcontroller \
-           file://openvswitch-testcontroller-setup \
-           git://github.com/openvswitch/ovs.git;protocol=git;branch=branch-2.7 \
-           file://openvswitch-add-ptest-${SRCREV}.patch \
-           file://run-ptest \
-           file://disable_m4_check.patch \
-           file://kernel_module.patch \
-           file://python-make-remaining-scripts-use-usr-bin-env.patch \
-           file://0001-use-the-linux-if_packet.h-Interface-directly.patch \
-           file://0002-Define-WAIT_ANY-if-not-provided-by-system.patch \
-           file://python-switch-remaining-scripts-to-use-python3.patch \
-           "
-
-# Temporarily backport patches to better support py3. These have been
-# merged upstream but are not part of v2.7.1.
-SRC_URI += " \
-           file://0001-Python3-compatibility-Convert-print-statements.patch \
-           file://0002-Python3-compatibility-exception-cleanup.patch \
-           file://0003-Python3-compatibility-execfile-to-exec.patch \
-           file://0004-Python3-compatibility-iteritems-to-items.patch \
-           file://0005-Python3-compatibility-fix-integer-problems.patch \
-           file://0006-Python3-compatibility-math-error-compatibility.patch \
-           file://0007-Python3-compatibility-unicode-to-str.patch \
-           file://0008-AUTHORS-Add-Jason-Wessel.patch \
-"
-
-LIC_FILES_CHKSUM = "file://COPYING;md5=17b2c9d4c70853a09c0e143137754b35"
-
-DPDK_INSTALL_DIR ?= "/opt/dpdk"
-
-PACKAGECONFIG ?= "libcap-ng"
-PACKAGECONFIG[dpdk] = "--with-dpdk=${STAGING_DIR_TARGET}${DPDK_INSTALL_DIR}/share/${TARGET_ARCH}-native-linuxapp-gcc,,dpdk,dpdk"
-PACKAGECONFIG[libcap-ng] = "--enable-libcapng,--disable-libcapng,libcap-ng,"
-
-# Don't compile kernel modules by default since it heavily depends on
-# kernel version. Use the in-kernel module for now.
-# distro layers can enable with EXTRA_OECONF_pn_openvswitch += ""
-# EXTRA_OECONF += "--with-linux=${STAGING_KERNEL_BUILDDIR} --with-linux-source=${STAGING_KERNEL_DIR} KARCH=${TARGET_ARCH}"
-
-# silence a warning
-FILES_${PN} += "/lib/modules"
-
-inherit ptest
-
-EXTRA_OEMAKE += "TEST_DEST=${D}${PTEST_PATH} TEST_ROOT=${PTEST_PATH}"
-
-do_install_ptest() {
-	oe_runmake test-install
-}
-
-do_install_append() {
-	oe_runmake modules_install INSTALL_MOD_PATH=${D}
-	rm -r ${D}/${localstatedir}/run
-}
